找出给定数据集中每列缺失值的百分比

新手上路,请多包涵
import pandas as pd
df = pd.read_csv('https://query.data.world/s/Hfu_PsEuD1Z_yJHmGaxWTxvkz7W_b0')
percent= 100*(len(df.loc[:,df.isnull().sum(axis=0)>=1 ].index) / len(df.index))
print(round(percent,2))

输入是 https://query.data.world/s/Hfu_PsEuD1Z_yJHmGaxWTxvkz7W_b0

输出应该是

Ord_id                 0.00
Prod_id                0.00
Ship_id                0.00
Cust_id                0.00
Sales                  0.24
Discount               0.65
Order_Quantity         0.65
Profit                 0.65
Shipping_Cost          0.65
Product_Base_Margin    1.30
dtype: float64

原文由 Shaswata 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 452
2 个回答

这个怎么样?我想我以前确实在这里发现过类似的东西,但我现在没有看到它……

 percent_missing = df.isnull().sum() * 100 / len(df)
missing_value_df = pd.DataFrame({'column_name': df.columns,
                                 'percent_missing': percent_missing})

如果您想要对缺失的百分比进行排序,请按照上面的说明进行操作:

 missing_value_df.sort_values('percent_missing', inplace=True)

如评论中所述,您也可以仅使用我上面代码中的第一行,即:

 percent_missing = df.isnull().sum() * 100 / len(df)

原文由 Engineero 发布,翻译遵循 CC BY-SA 4.0 许可协议

更新让我们使用 meanisnull

 df.isnull().mean() * 100

输出:

 Ord_id                 0.000000
Prod_id                0.000000
Ship_id                0.000000
Cust_id                0.000000
Sales                  0.238124
Discount               0.654840
Order_Quantity         0.654840
Profit                 0.654840
Shipping_Cost          0.654840
Product_Base_Margin    1.297774
dtype: float64

IIUC:

 df.isnull().sum() / df.shape[0] * 100.00

输出:

 Ord_id                 0.000000
Prod_id                0.000000
Ship_id                0.000000
Cust_id                0.000000
Sales                  0.238124
Discount               0.654840
Order_Quantity         0.654840
Profit                 0.654840
Shipping_Cost          0.654840
Product_Base_Margin    1.297774
dtype: float64

原文由 Scott Boston 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题