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

基于Pandas/Seaborn优化按条件统计日条目数的可视化方案

更简洁的实现方案:无需拆分DataFrame

嘿,我来给你分享几个更优雅的实现思路,不用拆分多个DataFrame就能完成按天分类统计并绘图的需求~

方案一:Pandas原生聚合(推荐)

核心思路是先给原DataFrame添加标记列,然后按日期一次性聚合所有分类的统计数据,最后直接绘图。

步骤1:添加关键词标记列

先给每条数据打上是否包含目标关键词的布尔标记:

import pandas as pd
import matplotlib.pyplot as plt

# 假设你的df已经是带datetime索引的格式
df['has_power'] = df['text'].str.contains('power')
df['has_foo'] = df['text'].str.contains('foo')
df['has_bar'] = df['text'].str.contains('bar')

步骤2:按日期聚合统计

用groupby配合agg一次性计算每日总数和各分类的数量:

daily_stats = df.groupby(df.index.date).agg(
    总条目数=('text', 'size'),
    含power=('has_power', 'sum'),  # 布尔值求和就是True的数量
    含foo=('has_foo', 'sum'),
    含bar=('has_bar', 'sum')
)

步骤3:绘图

直接用聚合后的DataFrame绘图,支持分组柱状图或堆叠柱状图:

# 分组柱状图(若想堆叠,添加stacked=True参数)
daily_stats.plot(kind='bar', figsize=(10, 6), rot=0, colormap='Set2')
plt.title('每日条目数分类统计')
plt.xlabel('日期')
plt.ylabel('数量')
plt.legend(title='分类')
plt.tight_layout()
plt.show()

方案二:Seaborn 长格式数据绘图

Seaborn更擅长处理长格式数据,我们可以先把数据转成长格式,再用barplot实现可视化:

步骤1:数据转长格式

import seaborn as sns

# 提取日期列
df['date'] = df.index.date

# 将标记列转为长格式
melted_data = df.melt(
    id_vars=['date'],
    value_vars=['has_power', 'has_foo', 'has_bar'],
    var_name='分类',
    value_name='包含关键词'
)

# 只保留包含关键词的行,并简化分类名称
melted_data = melted_data[melted_data['包含关键词']]
melted_data['分类'] = melted_data['分类'].str.replace('has_', '')

# 补充每日总条目数的数据
total_data = df.groupby('date').size().reset_index(name='数量')
total_data['分类'] = '总条目数'

# 合并分类数据和总数据
final_data = pd.concat([
    melted_data.groupby(['date', '分类']).size().reset_index(name='数量'),
    total_data
], ignore_index=True)

步骤2:Seaborn绘图

plt.figure(figsize=(10, 6))
sns.barplot(
    data=final_data,
    x='date',
    y='数量',
    hue='分类',
    palette='viridis'
)
plt.title('每日条目数分类统计')
plt.xlabel('日期')
plt.ylabel('数量')
plt.legend(title='分类')
plt.tight_layout()
plt.show()

方案优势

  • 全程基于原DataFrame操作,无需拆分多个子DataFrame,代码更简洁易维护
  • 聚合逻辑清晰,后续添加新关键词分类只需新增标记列即可
  • 绘图代码高度复用,可快速切换分组/堆叠等展示形式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:16:09