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

Pandas处理含多元素复杂字符串的groupby与value_counts及绘图需求

完成分组柱状图绘制的完整方案

嘿,你已经找对了统计的核心逻辑,不过得先补一步字符串拆分的关键操作(毕竟你的stringOfInterest里有逗号分隔的多字母值),之后用Pandas自带的绘图功能就能轻松生成符合要求的分组柱状图。我给你完整的代码和细节解释:

1. 预处理:拆分多字母字符串

原数据里存在类似C,O这类多字母组合,我们需要先把它们拆分成单个字母的独立行,这样才能统计每个字母的出现次数:

# 将逗号分隔的字符串拆分为列表,再展开成单独的行
df_exploded = df.assign(stringOfInterest=df['stringOfInterest'].str.split(',')).explode('stringOfInterest')

2. 生成统计结果(你提到的逻辑)

用处理后的拆分数据执行分组统计,再转成宽表格式方便绘图:

# 按trend分组,统计每个字母的出现次数,转宽表
count_df = df_exploded.groupby("trend")['stringOfInterest'].value_counts().unstack(0)
# 填充NaN为0,避免绘图时出现缺失柱子
count_df = count_df.fillna(0)

3. 绘制分组柱状图

直接调用Pandas的plot.bar()方法,默认就会生成按字母分组、不同trend作为并列柱子的图表:

import matplotlib.pyplot as plt

# 绘制分组柱状图,设置尺寸和x轴标签不旋转
ax = count_df.plot(kind='bar', figsize=(8, 5), rot=0)

# 添加图表装饰,提升可读性
ax.set_title('Letter Count by Trend', fontsize=12)
ax.set_xlabel('Letters', fontsize=10)
ax.set_ylabel('Occurrence Count', fontsize=10)
ax.legend(title='Trend Direction')

# 自动调整布局,避免标签被截断
plt.tight_layout()
plt.show()

额外说明

  • 如果你的count_df已经是处理好的统计结果(比如已经完成了字符串拆分),可以直接跳过前两步,执行绘图代码即可。
  • fillna(0)是为了保证那些在某个trend下未出现的字母显示0次,而不是空白,让图表更完整。
  • rot=0参数让x轴的字母标签保持水平,更易阅读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:44:08