pandas - total= df.isnull().sum(), percent1= df.count(),percent= df.isnull().count() 有什么区别?
问题描述
谁能说出 total= df.isnull().sum(), percent1= df.count(), df.isnull().count() 之间的区别,因为理想情况下 df.isnull().count() 应该给出所有仅计算空值,但它正在计算所有值。谁能帮助我理解这一点?
下面是我得到变量总输出的代码,因为只有空值计数和百分比1,因为只有非空值计数和百分比作为所有值的计数,无论是否为空。
total= df.isnull().sum().sort_values(ascending=False)
percent1= df.count()#helps to get all the non null values count
percent= df.isnull().count()
print(total)
print(percent1)
print(percent)
解决方案
根据文档计数的定义是:
计算每一列或每一行的非 NA 单元格。
并使用isnull
(或isna
)将您df
在其中的任何类型的数据框更改为布尔数据框,True
其中 nan 最初是哪里df
,否则为 False,nan
此数据框中没有更多的数据框,因此count
将返回不存在 nandf.isnull()
的行数df
在里面。举个例子:
df = pd.DataFrame({'a':range(4), 'b':[1,np.nan, 3, np.nan]})
print (df)
a b
0 0 1.0
1 1 NaN
2 2 3.0
3 3 NaN
如果你count
在这个数据框上使用你会得到:
print (df.count())
a 4
b 2 # here you get 2 because you have 2 nan in the column b as defined above
dtype: int64
但如果你使用isnull
它,你会得到
print (df.isnull())
a b
0 False False
1 False True #was nan in column b in df
2 False False
3 False True
在这里你没有nan
了,所以结果count
将是两列的行数
print (df.isnull().count())
a 4
b 4 #no more nan in df.isnull()
dtype: int64
但是因为True
实际上等于1又False
等于0,那么使用该sum
方法会为每个True
in加一,原来的df.isnull()
意思是innan
df
print (df.isnull().sum())
a 0 # because only False in column a of df.isnull()
b 2 # because you have two True in df.isnull() in column b
dtype: int64
最后,你可以看到这样的关系:
(df.count()+df.isnull().sum())==df.isnull().count()
推荐阅读
- python - 使用 scipy 和 DTW 对不同长度时间序列数据进行分层聚类
- c# - 从常规 ASP.NET MVC 在 IIS 上使用 .Net 核心捕获 Asp .Net 身份
- javascript - 如何使用 angularjs/javascript 将 HTML 表格导出到 excel
- sql - SQL 新手(非常新),需要添加总行数
- c# - 计算图表中的值
- php - 如何将所有会话数组数据插入数据库PHP
- dart - 使用变量作为参数的常量值无效
- google-sheets - 从其他选项卡查找和替换
- c# - Wpf 工具包 MessageBox 样式异常
- spring - 如何使用 PropertySource 文件进行单元测试?