我正在学习pandas。 我不确定何时使用.count()
函数,何时使用.value_counts()
函数。
count()函数用于计算给定轴上非NA/null观测值的数量。它也适用于非浮点型数据。
现在我们举个例子,创建一个名为df的数据帧。
df = pd.DataFrame({"A":[10, 8, 12, None, 5, 3],
"B":[-1, None, 6, 4, None, 3],
"C":["Shreyas", "Aman", "Apoorv", np.nan, "Kunal", "Ayush"]})
统计行轴上非NA值的数量。
df.count(axis = 0)
输出:
A 5
B 4
C 5
dtype: int64
df.count(axis = 1)
输出:
0 3
1 2
2 3
3 1
4 2
5 3
dtype: int64
value_counts() 函数返回一个包含唯一值计数的 Series。生成的对象将按照数量降序排列,因此第一个元素是出现最频繁的元素。默认情况下排除 NA 值。
因此,在下面的示例中
s = pd.Series([3, 1, 2, 3, 4, np.nan])
s.value_counts()
3.0 2
4.0 1
2.0 1
1.0 1
dtype: int64
value_counts()
函数对数据进行聚合并计算每个唯一值的数量。你可以使用 groupby
实现相同的功能,它是 pandas 中用于聚合数据的更广泛的函数。
count()
函数只返回应用于列(系列)上的非 NaN/Null 值的数量。
df = pd.DataFrame({'Id':['A', 'B', 'B', 'C', 'D', 'E', 'F', 'F'],
'Value':[10, 20, 15, 5, 35, 20, 10, 25]})
print(df)
Id Value
0 A 10
1 B 20
2 B 15
3 C 5
4 D 35
5 E 20
6 F 10
7 F 25
# Value counts
df['Id'].value_counts()
F 2
B 2
C 1
A 1
D 1
E 1
Name: Id, dtype: int64
# Same operation but with groupby
df.groupby('Id')['Id'].count()
Id
A 1
B 2
C 1
D 1
E 1
F 2
Name: Id, dtype: int64
# Count()
df['Id'].count()
8
NaN值和count
的示例:
最初的回答
print(df)
Id Value
0 A 10
1 B 20
2 B 15
3 NaN 5
4 D 35
5 E 20
6 F 10
7 F 25
df['Id'].count()
7
count()
返回序列中非空值的总数。
value_counts()
返回一个系列,其中包含每个唯一的非空值出现的次数,按出现频率从高到低排序。
通常,示例是传达这一点的最佳方式:
ser = pd.Series(list('aaaabbbccdef'))
ser
>
0 a
1 a
2 a
3 a
4 b
5 b
6 b
7 c
8 c
9 d
10 e
11 f
dtype: object
ser.count()
>
12
ser.value_counts()
>
a 4
b 3
c 2
f 1
d 1
e 1
dtype: int64
count()
方法,该方法返回数据框中每个列的count()
(标量)值的系列。但是,数据框没有value_counts()
方法。