如何用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 - 核心修改点:
- 替换
yfinance爬取逻辑为pandas.read_csv读取本地CSV - 解析日期列并设置为DataFrame索引
- 保留原代码的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
相关产品推荐
相关产品推荐

