Pandas dataframe中如何创建value_counts的列
在本文中,我们将介绍如何在Pandas的dataframe中创建value_counts的列。在数据分析时,我们经常需要了解数据中出现频率最高的值,在Pandas中我们可以使用value_counts()函数来实现这个目的。有时候,我们需要将value_counts结果作为一个新的列来添加到原始的dataframe中。
阅读更多:Pandas 教程
使用Pandas的value_counts函数
在使用value_counts()函数之前,我们需要对Pandas的dataframe有一定的掌握,以下是Pandas dataframe的简单回顾:
import pandas as pd
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva', 'Frank'],
'age': [25, 32, 18, 47, 21, 29],
'department': ['HR', 'IT', 'IT', 'Sales', 'HR', 'IT']
})
上面的代码创建了一个包含姓名、年龄和部门的dataframe。下面是dataframe的输出结果:
name age department
0 Alice 25 HR
1 Bob 32 IT
2 Charlie 18 IT
3 David 47 Sales
4 Eva 21 HR
5 Frank 29 IT
我们可以使用value_counts()函数来计算每个部门出现的次数:
df['department'].value_counts()
输出结果如下:
IT 3
HR 2
Sales 1
Name: department, dtype: int64
从输出结果中我们可以看出,IT部门出现了3次,HR部门出现了2次,Sales部门出现了1次。
添加value_counts的列到dataframe中
除了使用value_counts()函数查看值的出现频率,我们还可以使用它的结果作为一个新的列,将其添加到原始的dataframe中。代码如下:
df['department_counts'] = df['department'].value_counts()
输出结果如下:
name age department department_counts
0 Alice 25 HR 2
1 Bob 32 IT 3
2 Charlie 18 IT 3
3 David 47 Sales 1
4 Eva 21 HR 2
5 Frank 29 IT 3
可以看到,添加了一个新的列’department_counts’到原始的dataframe中,该列包含了每个部门出现的次数。正如我们所期望的,IT部门出现了3次,HR部门出现了2次,Sales部门出现了1次。
使用apply函数实现同样的目的
除了直接将value_counts()函数的结果作为一个新的列添加到dataframe中,我们还可以使用apply()函数来实现同样的目的。代码如下:
df['department_counts'] = df['department'].apply(lambda x: (df['department'] == x).sum())
输出结果同上:
name age department department_counts
0 Alice 25 HR 2
1 Bob 32 IT 3
2 Charlie 18 IT 3
3 David 47 Sales 1
4 Eva 21 HR 2
5 Frank 29 IT 3
可以看到,输出结果和上面直接使用value_counts()函数的结果相同。
总结
本文介绍了在Pandas的dataframe中创建value_counts的列的两种方法:直接将value_counts()函数的结果作为一个新的列添加到dataframe中,以及使用apply()函数实现相同的目的。Pandas可以在处理数据时提供很多好用的函数,掌握这些函数是进行数据分析的关键。