value_counts介绍
value_counts是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中个数,类似Excel里面的count函数
其是pandas下面的顶层函数,也可以作用在Series、DataFrame下
pd.value_counts(
values,
sort=True, #是否排序,默认是要排序
ascending=False, #默认降序排列
normalize=False, #标准化、转化成百分比形式
bins=None, #可以自定义分组区间,默认是没有,但也可以自定义区间
dropna=True, #是否删除nan,默认删除
常规用法:
import pandas as pd
pd.value_counts()
df.value_counts()
df['字段'].value_counts()
创建模拟数据
>>> import pandas as pd
>>> data=pd.DataFrame({'字段1':[1,2,3,4,5,6,5,3,2,4,5,4,4,4,6],
'字段2':['A','B','B','A','A','A','B','B','B','C','C','C','C','B','B']})
字段1 字段2
0 1 A
1 2 B
2 3 B
3 4 A
4 5 A
5 6 A
6 5 B
7 3 B
8 2 B
9 4 C
10 5 C
11 4 C
12 4 C
13 4 B
14 6 B
>>> data.dtypes
字段1 int64
字段2 object
dtype: object
Series情况下:
pandas 的 value_counts() 函数可以对Series里面的每个值进行计数并且排序,默认是降序
>>> data['字段2'].value_counts()
B 7
C 4
A 4
Name: 字段2, dtype: int64
>>> data['字段1'].value_counts()
4 5
5 3
6 2
3 2
2 2
1 1
Name: 字段1, dtype: int64
可以看出,既可以对分类变量统计,也可以对连续数值变量统计
如果是要对结果升序排列,可以添加ascending=True
来改变
>>> data['字段2'].value_counts(ascending=True)
A 4
C 4
B 7
Name: 字段2, dtype: int64
如果不想看统计的个数,而是想看占比,那么可以设置normalize=True
即可,结果是小数形式
>>> data['字段2'].value_counts(normalize=True)
B 0.466667
C 0.266667
A 0.266667
Name: 字段2, dtype: float64
DataFrame情况下
可以通过apply,对每一列变量进行统计
>>> data.apply(pd.value_counts)
字段1 字段2
1 1.0 NaN
2 2.0 NaN
3 2.0 NaN
4 5.0 NaN
5 3.0 NaN
6 2.0 NaN
A NaN 4.0
B NaN 7.0
C NaN 4.0
通过pandas进行调用
>>> pd.value_counts(data['字段2'])
B 7
C 4