用Pandas读取MySQL数据库中某只股票100天的日交易数据,将查询结果返回DataFrame里的数据,直接保存到Excel文件,并绘制日收盘价格走势、5天移动平均线、10天移动平均线。
时间: 2023-12-10 09:41:19 浏览: 72
使用python的pandas为你的股票绘制趋势图
以下是代码实现:
```python
import pandas as pd
import numpy as np
import pymysql
import matplotlib.pyplot as plt
# 连接MySQL数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='stock')
# 查询100天内的日交易数据
sql = "SELECT * FROM stock_data WHERE stock_code='600519' ORDER BY trade_date DESC LIMIT 100"
df = pd.read_sql(sql, conn)
# 关闭数据库连接
conn.close()
# 将数据保存到Excel文件
df.to_excel('stock_data.xlsx', index=False)
# 绘制收盘价走势图
plt.figure(figsize=(12, 6))
plt.plot(df['trade_date'], df['close'], label='Close Price')
plt.plot(df['trade_date'], df['close'].rolling(5).mean(), label='5-day Moving Average')
plt.plot(df['trade_date'], df['close'].rolling(10).mean(), label='10-day Moving Average')
plt.legend()
plt.title('Stock 600519 Daily Close Price Trend')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()
```
解释一下代码:
1. 首先,我们使用 `pymysql` 模块连接 MySQL 数据库,并执行 SQL 查询语句,将查询结果保存到 `DataFrame` 中。
2. 然后,我们将这个 `DataFrame` 直接保存到 `Excel` 文件中,使用 `to_excel()` 方法,并指定 `index=False` 参数表示不保存行索引。
3. 最后,我们使用 `matplotlib` 绘制股票收盘价走势图。我们使用 `plot()` 方法绘制收盘价的走势线,并使用 `rolling()` 方法计算5天和10天的移动平均线,然后再将这两条移动平均线也绘制出来。
阅读全文