You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python对字符串类型数据做分组统计并可视化?

解决方法

1. 正确统计每个type的分组数量

你之前用df.groupby(['type', 'url']).sum()是错误的——按type和url双重分组后,sum()对字符串类型数据无效,才会出现乱码输出。要统计每个type的数量,用以下两种简单方法即可:

方法一:直接用value_counts()

type_counts = df['type'].value_counts()
print(type_counts)

这个方法直接返回每个type的出现次数,结果是索引为type取值、值为整数计数的Series,完全符合可视化要求。

方法二:groupby搭配size()

type_counts = df.groupby('type').size()
print(type_counts)

size()会统计每个分组的行数(也就是该type的数量),同样返回整数类型的统计结果。

2. 可视化统计结果

拿到整数计数后,直接用matplotlib或pandas自带的绘图功能就能完成可视化,这里给出两种常用方案:

柱状图(Matplotlib)

import matplotlib.pyplot as plt

# 可选:设置中文显示,避免乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘制柱状图
type_counts.plot(kind='bar')
plt.title('各类型URL数量统计')
plt.xlabel('URL类型')
plt.ylabel('数量')
plt.xticks(rotation=45)  # 旋转x轴标签,防止重叠
plt.show()

饼图(Pandas自带绘图)

type_counts.plot(kind='pie', autopct='%1.1f%%')
plt.title('各类型URL占比')
plt.ylabel('')  # 去掉饼图默认的y轴标签,让布局更美观
plt.show()

补充说明

  • 你之前试的len()、.sum()、.count()里,.count()其实可以用在groupby后,但df.groupby('type').count()是统计分组内非空值数量(无缺失值时和size()结果一致),但size()更直接适配你的需求。
  • .sum()不适合字符串类型数据,它的作用是拼接字符串,不是统计数量,这也是你之前出错的原因之一。

内容的提问来源于stack exchange,提问作者ThereIsAGhostInMyComputer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:40:33