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

如何用Python读取CSV并绘制含SMA的股票走势图(适配yfinance代码)

解决方案:从CSV读取股票数据并计算绘制SMA均线

步骤说明

  • 确保你的CSV文件包含至少**日期(Date)和收盘价(Close)**列(如需其他指标可扩展),示例CSV结构如下:
    Date,Open,High,Low,Close,Volume
    2003-01-31,12.5,13.2,12.1,12.8,150000
    2003-02-28,12.9,13.5,12.7,13.3,180000
    ...
    2023-12-31,45.2,46.0,44.8,45.5,220000
    
  • 核心修改点:
    1. 替换yfinance爬取逻辑为pandas.read_csv读取本地CSV
    2. 解析日期列并设置为DataFrame索引
    3. 保留原代码的SMA计算与绘图逻辑

修改后的完整代码

import pandas as pd
import matplotlib.pyplot as plt

# 1. 读取CSV数据(替换为你的实际文件路径)
df = pd.read_csv('GJTL_monthly_data.csv')

# 2. 处理日期列:转为datetime格式并设为索引
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date', inplace=True)

# 3. 计算SMA均线(示例为20期和50期,可按原代码调整周期)
df['SMA20'] = df['Close'].rolling(window=20).mean()
df['SMA50'] = df['Close'].rolling(window=50).mean()

# 4. 绘制走势图(与原代码风格一致)
plt.figure(figsize=(12, 6))
plt.plot(df['Close'], label='GJTL Close Price', color='blue', alpha=0.5)
plt.plot(df['SMA20'], label='20-Period SMA', color='red')
plt.plot(df['SMA50'], label='50-Period SMA', color='green')

# 添加图表基础元素
plt.title('GJTL Monthly Price & SMA Moving Averages (2003-2023)')
plt.xlabel('Date')
plt.ylabel('Price (USD)')
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()

# 显示或保存图表
plt.show()
# plt.savefig('GJTL_SMA_chart.png')  # 可选:保存为本地图片

关键细节说明

  • CSV路径:将'GJTL_monthly_data.csv'替换为你的实际文件路径(相对/绝对路径均可)
  • 日期格式适配:如果CSV日期格式不是YYYY-MM-DD,可在pd.to_datetime中指定format参数,比如format='%Y/%m/%d'
  • SMA周期调整:根据原代码的周期修改window参数,比如原代码用10/30期就改成window=10和window=30
  • 缺失值处理:若CSV存在缺失数据,可添加df.dropna(inplace=True)或df.fillna(method='ffill')处理后再计算SMA

内容的提问来源于stack exchange,提问作者Freya the Goddess

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:45:43