当我们处理数据时可能需要在多列中查找某个唯一值,这时候就可以使用 Pandas 来完成这个任务。
假设我们有以下数据集,包含多个人的姓名、年龄、性别和职业:
名字 | 年龄 | 性别 | 职业 |
---|---|---|---|
Tom | 22 | 男 | 程序员 |
Alice | 25 | 女 | 产品经理 |
Bob | 28 | 男 | 销售 |
Tom | 30 | 男 | 产品经理 |
Alice | 24 | 女 | 销售 |
我们想要知道每位人员的职业是唯一的还是存在重复。
首先,我们可以使用 Pandas 的 drop_duplicates() 函数去除重复的行,并使用 subset 参数选择要看的列。
import pandas as pd
# 从 csv 文件中读取数据
data = pd.read_csv('data.csv')
# 选择要查看的列
cols = ['名字', '年龄', '性别', '职业']
# 使用 drop_duplicates() 函数去除重复行
unique_data = data.drop_duplicates(subset=cols)
# 选择要显示的列
show_cols = ['名字', '职业']
# 显示不重复的人员及职业列
print(unique_data[show_cols])
运行结果为:
名字 职业
0 Tom 程序员
1 Alice 产品经理
2 Bob 销售
3 Tom 产品经理
4 Alice 销售
可以看到,结果中每位人员都对应着唯一的职业。
接着,我们可以使用 Pandas 的 groupby() 函数对职业列进行分组,然后计算每个职业分组的数量。
# 对职业列进行分组
grouped_data = unique_data.groupby('职业')
# 计算每个职业分组的数量
count_data = grouped_data.count()
# 显示结果
print(count_data['名字'])
运行结果为:
职业
产品经理 2
程序员 1
销售 2
Name: 名字, dtype: int64
结果中每个职业前面的数字就是该职业所拥有的人数。
综上,我们可以通过 Pandas 的 drop_duplicates() 函数和 groupby() 函数来从多列中寻找唯一值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas – 从多列中寻找唯一值 - Python技术站