看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在数据分析中,最常见、最基础也最实用的分析之一就是 分布统计(Distribution Analysis):
这些问题几乎在所有业务分析报告中都会出现。
pandas 提供了两种非常高效的方式用于分类统计:
value_counts() —— 对单列分类统计的最快捷方式groupby.size() —— 多维度类别组合统计的常用方案这一篇文章将通过一个“小型用户画像数据集”的案例,展示如何进行单维度与多维度分类统计。
我们有一份用户基础信息表,包含:
gender(性别)city(城市)channel(注册渠道)示例数据如下:
import pandas as pd
from io import StringIO
data = StringIO("""
user_id,gender,city,channel
U001,Male,Beijing,App
U002,Female,Shanghai,Web
U003,Female,Guangzhou,App
U004,Male,Beijing,App
U005,Female,Beijing,Web
U006,Male,Shenzhen,App
U007,Female,Beijing,App
U008,Male,Guangzhou,Web
U009,Female,Shanghai,App
U010,Male,Shanghai,Web
""")
df = pd.read_csv(data)
我们希望从这份数据中得到:
最终展示用户分布画像,为后续运营与投放提供参考。
使用 value_counts() 进行单字段统计:
df['gender'].value_counts()df['city'].value_counts()df['channel'].value_counts()使用 groupby.size() 进行多字段统计:
df.groupby(['city','channel']).size()统计结果转化为 DataFrame,美化输出。
代码如下:
# 1. 性别分布
gender_dist = df['gender'].value_counts()
# 2. 城市分布
city_dist = df['city'].value_counts()
# 3. 渠道分布
channel_dist = df['channel'].value_counts()
# 4. 多维度分布统计:城市 × 渠道
city_channel_dist = (
df.groupby(['city', 'channel'])
.size()
.reset_index(name='count')
)
print("=== 性别分布 ===")
print(gender_dist)
print("\n=== 城市分布 ===")
print(city_dist)
print("\n=== 渠道分布 ===")
print(channel_dist)
print("\n=== 城市 × 渠道 统计 ===")
print(city_channel_dist)
value_counts()最适合于单个字段的快速统计,默认按数量从高到低排序。
常用于:
例如:
df['city'].value_counts()
会输出城市用户数量排行。
groupby.size()用于多维度分类统计,等价于 SQL 中的:
GROUP BY city, channel COUNT(*)
例如:
df.groupby(['city','channel']).size()
得到每个城市在不同渠道下有多少用户。
配合 reset_index():
.reset_index(name='count')
可以把结果变成整齐的 DataFrame。
假设输出如下:
Female 5
Male 5
说明男女各占 50%。
Beijing 4
Shanghai 3
Guangzhou 2
Shenzhen 1
北京用户占比最高。
city channel count
0 Beijing App 2
1 Beijing Web 2
2 Guangzhou App 1
3 Guangzhou Web 1
4 Shanghai App 1
5 Shanghai Web 2
6 Shenzhen App 1
可立即看到:
非常有助于投放渠道优化。
分类统计是业务分析中使用频率最高的内容,适用场景包括:
value_counts 和 groupby.size 是每一个数据分析师必须掌握的基础技能。
(完)
更新时间:2025-11-15 11:47:40 标签:pandas python 多维度 分布分析