📅  最后修改于: 2023-12-03 15:33:23.384000             🧑  作者: Mango
在Pandas中, DataFrame.count()
可以用来统计每一列(或行)中非空数据的数量。
DataFrame.count(axis=0, level=None, numeric_only=False)
axis
: 统计的轴向,默认为0,表示统计每一列的数量;若为1,则统计行数量。level
: 对于层级索引(MultiIndex)的数据结构,指定统计的级别。numeric_only
: 如果为True,则只统计数值类型列中的非空值数量。返回一个Pandas Series,其中每个索引代表每一列/行的名字,对应的值为该列/行中非空数据的数量。
import pandas as pd
data = {'name': ['Alice', 'Bob', '', 'David', 'Eva'],
'age': [25, 30, 20, None, 27],
'gender': ['F', 'M', 'M', 'M', 'F'],
'score': [80, 75, 95, None, None]}
df = pd.DataFrame(data)
print(df.count()) # 默认统计每一列的数量
输出结果:
name 4
age 4
gender 5
score 3
dtype: int64
这里,'name'、'age'、'gender'、'score'四列中分别有4、4、5、3个非空数据。需要注意的是,由于第三列存在一个空字符串,因此其仍然被算做非空数据,并没有被统计在空值数量中。
如果我们想要统计每一行的非空数量,可以在 count()
的参数中加入 axis=1
:
print(df.count(axis=1))
输出结果:
0 4
1 4
2 3
3 3
4 3
dtype: int64
第2行存在空字符串和空值,因此只有3个非空数据,其余行均有4个非空数据。
如果我们只对数值类型的列进行统计,可以加入 numeric_only=True
参数:
print(df.count(numeric_only=True))
输出结果:
age 4
score 3
dtype: int64
这里仅有 'age' 和 'score' 两列是数值类型的,它们中的非空数据数量分别是4和3。