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

Pandas计算每行相对9点列涨跌幅 绘制股价日内涨跌幅走势图

实现方案

步骤1:计算相对9点的涨跌幅

直接基于行维度做基准值除法即可,无需使用pct_change,代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# 假设你的原始数据DataFrame名为df
# 计算各时段相对当日9点价格的涨跌幅(换算为百分比)
df_pct = (df.div(df['9'], axis=0) - 1) * 100

这里指定axis=0是为了保证每一行的所有时段价格,都和该行的9点价格做除法运算,完全匹配需求。

步骤2:计算各时段平均涨跌幅

对涨跌幅DataFrame按列求均值,即可得到所有日期同一交易小时的平均涨跌幅:

avg_pct = df_pct.mean()

步骤3:绘制走势图表

# 配置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10,6))
# 绘制每日单独的日内走势
for date in df_pct.index:
    plt.plot(df_pct.columns, df_pct.loc[date], label=str(date), alpha=0.6, linewidth=1)
# 叠加平均走势曲线
plt.plot(avg_pct.index, avg_pct.values, label='历史平均', color='crimson', linewidth=2.5, linestyle='--')

plt.xlabel('交易小时')
plt.ylabel('相对9点涨跌幅(%)')
plt.title('股价日内涨跌幅走势')
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left') # 图例放外侧避免遮挡曲线
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()

注意事项

如果数据中存在9点价格为0的异常值,建议提前用df = df[df['9']>0]过滤异常行,避免出现除零错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:12:03