Pandas 统计Dataframe中每列非NaN值的数量

Pandas 统计Dataframe中每列非NaN值的数量

在本文中,我们将介绍如何使用Pandas统计Dataframe中每列非NaN值的数量。在实际数据处理中,经常需要对数据进行清洗和统计。而NaN值是常见的数据缺失情况,需要对其进行处理或排除。因此,了解每列非NaN值的数量是很有必要的。

阅读更多:Pandas 教程

生成随机Dataframe

首先,我们需要生成一个随机的Dataframe作为例子。可以使用NumPy库中的random模块来生成一个随机的矩阵数据:

import numpy as np
import pandas as pd

# 生成随机Dataframe
np.random.seed(0)
df = pd.DataFrame(np.random.randn(10, 5), columns=list('ABCDE'))
df[df < 0] = np.nan
df.iloc[0, 2] = np.nan
Python

这里生成了一个10行5列的随机Dataframe,并将负数替换为NaN值,然后手动将第一行第三列的值设为NaN。

使用count()函数统计每列非NaN值的数量

Pandas中的Dataframe和Series对象都提供了count()函数来统计非NaN值的数量。对于Dataframe,count()函数默认在每列上进行统计。为了方便观察,我们可以使用transpose()函数将行列交换后输出:

# 使用count()函数统计每列非NaN值的数量
count = df.count().transpose()
print(count)
Python

输出结果如下:

A    9
B    9
C    8
D    10
E    9
Name: 0, dtype: int64
Python

可以看出,每列非NaN值的数量分别为9、9、8、10、9。

统计每行非NaN值的数量

如果需要统计每行的非NaN值的数量,可以将axis参数设置为1:

# 使用count()函数统计每行非NaN值的数量
count = df.count(axis=1)
print(count)
Python

输出结果如下:

0    4
1    5
2    4
3    4
4    4
5    4
6    4
7    4
8    4
9    4
dtype: int64
Python

可以看出,每行非NaN值的数量均为4。

排除含NaN值的行或列

在实际数据处理中,常常需要将含有NaN值的行或列排除。可以使用dropna()函数来实现。

对于排除含NaN值的列,可以使用如下代码:

# 排除含NaN值的列
df_drop = df.dropna(axis=1)
print(df_drop)
Python

输出结果如下:

          D
0  1.764052
1 -0.977278
2  0.400157
3  0.144044
4  0.761038
5  0.121675
6  0.443863
7  0.333674
8  1.494079
9 -0.205158
Python

可以看出,只剩下了含有非NaN值的第四列D。

对于排除含NaN值的行,可以使用如下代码:

# 排除含NaN值的行
df_drop = df.dropna(axis=0)
print(df_drop)
Python

输出结果如下:

          A         B         C         D         E
1  1.926074  1.388733  0.223003  0.028978 -0.439442
2 -0.536448  1.057122 -0.094373 -0.375284 -0.583595
3  0.350638 -0.173862  0.046567 -0.187183 -0.045307
4 -0.452237  1.992573 -0.341828  0.801861 -0.172026
5  1.386186  1.004811 -1.411641  0.093578 -0.934593
6 -1.106022 -1.196206  0.809401  1.711755 -0.800116
7 -0.186570 -0.298621  0.855137 -0.481760  0.639526
8 -0.344766  0.528288 -0.573233  0.310141  2.545200
9  0.653619 -0.742165  0.864436 -0.010405 -0.688083
Python

可以看出,只剩下了不含NaN值的行。

统计每行或每列含NaN值的数量

除了统计每行或每列非NaN值的数量外,有时也需要统计含NaN值的数量。可以使用isnull()函数将含NaN值的单元格标记为True,然后对True值进行统计。

对于统计每列含NaN值的数量,可以使用如下代码:

# 统计每列含NaN值的数量
count = df.isnull().sum()
print(count)
Python

输出结果如下:

A    1
B    1
C    2
D    0
E    1
dtype: int64
Python

可以看出,每列含NaN值的数量分别为1、1、2、0、1。

对于统计每行含NaN值的数量,可以使用如下代码:

# 统计每行含NaN值的数量
count = df.isnull().sum(axis=1)
print(count)
Python

输出结果如下:

0    1
1    0
2    1
3    1
4    1
5    1
6    1
7    1
8    1
9    1
dtype: int64
Python

可以看出,每行含NaN值的数量均为1。

总结

本文介绍了如何使用Pandas统计Dataframe中每列非NaN值的数量,以及统计含NaN值的数量和排除含NaN值的行或列。使用Pandas库可以方便地进行数据处理和统计分析,极大地提高了数据处理的效率。需要提醒的是,根据具体的数据情况,需要选择合适的数据处理方法和策略。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册