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
单线解
df.isnull().mean().round(4).mul(100).sort_values(ascending=False)
更新让我们使用mean
和isnull
:
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
这个怎么样?我想我以前在这里发现过类似的东西,但我现在没看到。。。
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)
问题内容: 我正在尝试从DataFrame计算列中每个值的百分位数。 有没有更好的方法来编写以下代码? 我希望看到更好的性能。 问题答案: 似乎您想要: 性能:
问题内容: 我有一个回归模型,其中因变量是连续的,但是90%的自变量是分类的(有序和无序),大约30%的记录具有缺失值(更糟糕的是,它们无规律地随机缺失,也就是说,超过百分之四十五的数据至少有一个缺失值)。没有先验理论来选择模型的规格,因此关键任务之一是在运行回归之前进行尺寸缩减。虽然我知道用于连续变量降维的几种方法,但我不知道关于分类数据的类似静态文献(也许,除了作为对应分析的一部分,这基本上是
问题内容: 我有一个pandas数据框my_df,在这里我可以找到给定列的mean(),median(),mode(): 我想知道是否可以找到更详细的统计数据,例如90%?谢谢! 问题答案: 您可以使用pandas.DataFrame.quantile()函数,如下所示。
问题内容: 我正在寻找一种最有效的方法,根据序列中缺少的数字将数字列表分成较小的列表。例如,如果初始列表为: 该函数将产生: 要么 会导致: 问题答案: 旧Python文档中的Python 3版本代码: 每当关键函数更改其返回值时,itertools模块中的函数都会生成中断。诀窍在于,返回值是列表中的数字减去列表中元素的位置。当数字中有空格时,此差异会更改。 该功能来自operator模块,您必须
问题内容: 我有一个表,带有2个重要列DocEntry,WebId 样本数据就像 现在我们可以在这里注意到,在WebId列中缺少S004。我们如何通过查询找到这些缺失的数字。 进一步说明: 如果网站ID之间缺少任何数字,则Web ID应按升序排列,例如S001,S002,S003,S004,S005。我没有任何单独的表格来输入可能的条目,因为这是不切实际的。我必须逐月查找丢失的数字,以每个月的开始
我有一个85列的大数据框。丢失的数据已编码为。我的目标是获得每列中缺少的数据量。所以我写了一个for循环来创建一个列表来获取金额。但它不起作用。 以下是我的代码: 我尝试使用循环中的代码,通过将更改为某一列的名称,来生成该列缺少的值的数量,然后代码运行并给出该列缺少的数据的数量。 因此,我不知道如何更正for循环代码。有人能帮我吗?我非常感谢你的帮助。