pandas 为什么df.isnull().sum()是这样工作的?

06odsfpq  于 2023-08-01  发布在  其他
关注(0)|答案(4)|浏览(175)

当我执行df.isnull().sum()时,我得到列中空值的计数。但是.sum()的默认轴是None或0 -应该是跨列求和。
为什么.sum()计算列的和,而不是行的和,而默认值是sum across axis = 0?
谢谢你,谢谢

wwwo4jvm

wwwo4jvm1#

我看到了你解释的相反的行为:

Sums across the columns
In [3309]:  df1.isnull().sum(1)                                                                                                                                                                
Out[3309]: 
0     0
1     1
2     0
3     0
4     0
5     0
6     0
7     0
8     0
9     0
10    0
11    0
dtype: int64

字符串
对各列求和

In [3310]:  df1.isnull().sum()                                                                                                                                                                 
Out[3310]: 
date        0
variable    1
value       0
dtype: int64

yqyhoc1h

yqyhoc1h2#

这不是我看到的功能。让我们看看这个小例子。

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'A':[np.nan, np.nan, 3],'B':[1,1,3]}, index =[*'abc'])
print(df)
print(df.isnull().sum())
print(df.sum())

字符串
请注意,列是大写的“A”和“B”,索引或行索引是小写的。
输出量:

A  B
a  NaN  1
b  NaN  1
c  3.0  3

A    2
B    0
dtype: int64

A    3.0
B    5.0
dtype: float64


根据文件:
axis:{index(0),columns(1)}要应用的函数的轴。

z9zf31ra

z9zf31ra3#

轴参数与要求和的方向正交。
不幸的是,sum的pandas文档目前没有明确说明这一点,但count的文档做到了:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.count.html
参数axis{0或'index',1或'columns'},默认值为0如果为每列生成0或'index'计数。如果为每行生成1或“列”计数。

vltsax25

vltsax254#

嘿,让我告诉你我认为它做了什么..首先.isnull()做的是如果任何列值为空,它返回值1,然后.sum()将添加.isnull()返回的1,并继续添加尽可能多的1 .isnull()将返回意味着存在尽可能多的空值,如果没有空值,.isnull()将简单地返回0,添加0将不会导致任何结果,但0。我想这能帮助你理解

相关问题