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

如何自动绘制DataFrame中多分组NAME的AMOUNT1折线图

自动绘制多分组折线图(适配新增NAME)

以下是基于Python的两种实现方案,均能自动识别所有NAME分组,后续新增NAME无需修改代码:

方案一:Pandas + Matplotlib 手动循环实现

import pandas as pd
import matplotlib.pyplot as plt

# 构造数据集(实际场景可替换为 pd.read_csv("你的数据文件路径"))
data = {
    'period_date_str': ['2022-09-30', '2022-09-30', '2022-09-30',
                        '2022-10-30', '2022-10-30', '2022-10-30',
                        '2022-11-30', '2022-11-30', '2022-11-30'],
    'NAME': ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'],
    'AMOUNT1': [10, 15, 20, 9, 12, 14, 8, 9, 4]
}
df = pd.DataFrame(data)

# 将日期列转为时间类型,保证x轴按时间顺序排列
df['period_date_str'] = pd.to_datetime(df['period_date_str'])

# 获取所有唯一NAME(自动适配新增项)
unique_names = df['NAME'].unique()

plt.figure(figsize=(10, 6))

# 遍历每个NAME绘制折线
for name in unique_names:
    subset = df[df['NAME'] == name]
    plt.plot(subset['period_date_str'], subset['AMOUNT1'], marker='o', label=name)

# 配置图表样式
plt.xlabel('日期')
plt.ylabel('AMOUNT1')
plt.title('各NAME的AMOUNT1趋势')
plt.legend(title='NAME')
plt.grid(True)
plt.xticks(rotation=45)

plt.tight_layout()
plt.show()

方案二:Seaborn 一键分组实现(更简洁)

Seaborn会自动根据hue参数分组绘图,无需手动循环:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 构造数据集(实际场景可替换为 pd.read_csv("你的数据文件路径"))
data = {
    'period_date_str': ['2022-09-30', '2022-09-30', '2022-09-30',
                        '2022-10-30', '2022-10-30', '2022-10-30',
                        '2022-11-30', '2022-11-30', '2022-11-30'],
    'NAME': ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'],
    'AMOUNT1': [10, 15, 20, 9, 12, 14, 8, 9, 4]
}
df = pd.DataFrame(data)

# 将日期列转为时间类型
df['period_date_str'] = pd.to_datetime(df['period_date_str'])

plt.figure(figsize=(10, 6))
# 自动按NAME分组绘制折线
sns.lineplot(data=df, x='period_date_str', y='AMOUNT1', hue='NAME', marker='o')

# 配置图表样式
plt.xlabel('日期')
plt.ylabel('AMOUNT1')
plt.title('各NAME的AMOUNT1趋势')
plt.xticks(rotation=45)
plt.grid(True)

plt.tight_layout()
plt.show()

关键特性说明

  • 两种方案均通过df['NAME'].unique()(方案一)或Seaborn的hue参数(方案二)自动识别所有分组,新增NAME后无需修改代码
  • 转换日期列为时间类型,确保x轴按时间顺序正确排列,避免字符串排序导致的混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:30:32