pandas 缺失值:为什么isnull()不报告NaN

aoyhnmkz  于 2023-10-14  发布在  其他
关注(0)|答案(2)|浏览(120)

想知道NULL(我的意思是空单元格)是否与python中的NaNna不同。我在检查我的数据集是否有缺失值。但似乎pandas并没有报告所有缺失的值。

df2.isnull().any()
id          False
trip_id     False
distance    False
duration    False
speed       False
foot        False
bike        False
car         False
bus         False
metro       False
mode         True
dtype: bool

df2.isnull().any().sum()
1

然而,在进一步检查时,我注意到两个缺失值:

df2.head(10)
+---+-----------+---------+----------+----------+-------+-------+-------+-------+-------+-------+-------+
|   |    id     | trip_id | distance | duration | speed | foot  | bike  |  car  |  bus  | metro | mode  |
+---+-----------+---------+----------+----------+-------+-------+-------+-------+-------+-------+-------+
| 0 | 441814000 |  441814 | 10632.93 |     2076 | 5.12  | False | False | True  | False | False | car   |
| 1 | 442313000 |  442313 | 738.02   |     2075 | 0.36  | True  | False | False | False | False | foot  |
| 2 | 442795000 |  442795 | 5759.29  |     3879 | 1.48  | True  | False | False | False | False | NaN   |
| 3 | 441817000 |  441817 | 31110.93 |     2948 | 10.55 | False | False | True  | False | False | car   |
| 4 | 442316000 |  442316 | 49636.50 |     2971 | 16.71 | False | False | True  | False | False | car   |
| 5 | 441316000 |  441316 | 9736.87  |     3185 | 3.06  | True  | False | True  | False | False | car   |
| 6 | 441818000 |  441818 | 10027.53 |     1181 | 8.49  | False | False | True  | False | False | car   |
| 7 | 442798000 |  442798 | 1862.62  |     2039 | 0.91  | True  | False | False | False | False | foot  |
| 8 | 442318000 |  442318 | 39738.04 |     4468 | 8.89  | True  | False | False | False | True  | metro |
| 9 | 441318000 |  441318 | 18472.13 |     5670 | 3.26  | True  | False | False | False | False | NaN   |
+---+-----------+---------+----------+----------+-------+-------+-------+-------+-------+-------+-------+

为什么isnull().any.sum()只报告一个NaN

0sgqnhkj

0sgqnhkj1#

对于您的情况,这是因为您正在使用.any(),如果任何值是NaN,则只会返回,您可能只是想要isnull().sum()
编辑:这将给予你每列的计数,如果你想要一个总值,那么你可以像ayhan提到的那样做isnull().sum().sum()

2o7dmzc5

2o7dmzc52#

我有同样的问题,我的细胞有一个空间,我修复了这个问题,将其替换为NaN

df.replace(' ', np.nan, inplace=True)

相关问题