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

如何按市场分组并在指定日期区间内绘制DataFrame图表?

嘿,我来帮你搞定这个金融数据可视化的需求!咱们用Python的pandas+matplotlib/seaborn来实现,这是数据分析圈里最常用的组合,步骤清晰好上手:

第一步:先把数据处理妥当

首先得把日期格式转成可操作的datetime类型,再筛选你要的时间区间:

  1. 读取数据:假设你的数据是CSV格式,先读进来:
import pandas as pd

# 读取数据,替换成你的文件路径
df = pd.read_csv('your_financial_data.csv')
  1. 转换日期格式:你的日期是200101这种年月数字,得转成datetime类型,方便后续筛选:
# 用%Y%m匹配YYYYMM格式的日期
df['date'] = pd.to_datetime(df['date'], format='%Y%m')
  1. 筛选指定日期区间:比如要筛选2000年到2002年的数据:
# 定义起止日期,注意用YYYY-MM-DD格式
start_date = '2000-01-01'
end_date = '2002-12-31'

# 筛选数据
df_filtered = df[(df['date'] >= start_date) & (df['date'] <= end_date)]

或者更简洁的between方法:

df_filtered = df[df['date'].between(start_date, end_date)]
第二步:绘制按Market分组的折线图

折线图适合展示指标随时间的变化趋势,用seaborn能快速实现分组可视化:

import seaborn as sns
import matplotlib.pyplot as plt

# 设置绘图风格
sns.set_style("whitegrid")

# 绘制折线图,hue参数按market分组
plt.figure(figsize=(12, 6))
sns.lineplot(
    data=df_filtered,
    x='date',
    y='metric1',  # 替换成你要展示的指标,比如metric2/metric3
    hue='market',  # 按market分组
    marker='o',  # 给每个数据点加标记
    linewidth=2
)

# 优化图表显示
plt.title('Metric1 Trend by Market (2000-2002)', fontsize=14)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Metric1 Value', fontsize=12)
plt.xticks(rotation=45)  # 旋转x轴日期,避免重叠
plt.legend(title='Market')
plt.tight_layout()  # 自动调整布局
plt.show()

如果要同时展示多个指标,可以子图形式绘制,比如:

metrics = ['metric1', 'metric2', 'metric3']
fig, axes = plt.subplots(3, 1, figsize=(12, 15))

for idx, metric in enumerate(metrics):
    sns.lineplot(
        data=df_filtered,
        x='date',
        y=metric,
        hue='market',
        marker='o',
        ax=axes[idx]
    )
    axes[idx].set_title(f'{metric} Trend by Market (2000-2002)')
    axes[idx].set_xlabel('Date')
    axes[idx].set_ylabel(f'{metric} Value')
    axes[idx].tick_params(axis='x', rotation=45)

plt.tight_layout()
plt.show()
第三步:绘制按Market分组的柱状图

柱状图适合对比同一日期下不同市场的指标值,这里用分组柱状图示例:

plt.figure(figsize=(12, 6))
sns.barplot(
    data=df_filtered,
    x='date',
    y='metric1',
    hue='market',
    palette='Set2'
)

plt.title('Metric1 Comparison by Market (2000-2002)', fontsize=14)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Metric1 Value', fontsize=12)
plt.xticks(rotation=45)
plt.legend(title='Market')
plt.tight_layout()
plt.show()
额外小提示
  • 如果你的日期是字符串格式(比如"200101"),转换datetime的代码一样能用,pd.to_datetime会自动识别。
  • 要是需要保存图表,把plt.show()换成plt.savefig('market_trend.png', dpi=300)就能导出高清图片。
  • 如果用Excel的话,也可以先把日期转成日期格式,用数据筛选功能选区间,然后插入图表时选择“按系列分组”即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:40:15