看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)假设你有一个如下的 pandas DataFrame,按以下要求统计各个数据的出现次数。
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '赵六', '张三', '李四', '张三'],
'科目': ['数学', '语文', '英语', '数学', '语文', '数学', '英语'],
'成绩': [85, 90, 78, 92, 88, 95, 82]
}
df = pd.DataFrame(data)
请编写代码完成以下任务:
代码如下:
# 1. 统计"姓名"列中每个名字出现的次数,并按出现次数降序排列
df['姓名'].value_counts()
'''
姓名
张三 3
李四 2
王五 1
赵六 1
Name: count, dtype: int64
'''
# 2. 统计"科目"列中每个科目出现的次数,并按出现次数升序排列
df['科目'].value_counts(ascending=True)
'''
科目
语文 2
英语 2
数学 3
Name: count, dtype: int64
'''
# 3. 将"成绩"列的值分成3个等宽区间,统计每个区间内成绩的数量
df['成绩'].value_counts(bins=3)
'''
(89.333, 95.0] 3
(77.982, 83.667] 2
(83.667, 89.333] 2
Name: count, dtype: int64
'''
# 4. 统计"姓名"和"科目"两列的组合出现的次数
df.value_counts(['姓名', '科目'])
'''
姓名 科目
张三 数学 1
英语 1
语文 1
李四 数学 1
语文 1
王五 英语 1
赵六 数学 1
Name: count, dtype: int64
'''
# 5. 统计"姓名"列中每个科目出现的频率(使用normalize参数)
df['姓名'].value_counts(normalize=True)
'''
姓名
张三 0.428571
李四 0.285714
王五 0.142857
赵六 0.142857
Name: proportion, dtype: float64
'''
df['姓名'].value_counts(normalize=True).apply(lambda x: f"{x:.0%}")
'''
姓名
张三 43%
李四 29%
王五 14%
赵六 14%
Name: proportion, dtype: object
'''
查看相关链接中的知识。
(完)
更新时间:2025-08-08 10:59:29 标签:pandas python 次数