用Pandas读取MySQL数据库中某只股票100天的日交易数据,将查询结果返回DataFrame里的数据,直接保存到Excel文件,并绘制日收盘价格走势、5天移动平均线、10天移动平均线。
时间: 2023-06-27 14:07:52 浏览: 119
首先需要安装pandas和mysql-connector-python包。
读取MySQL数据库中某只股票100天的日交易数据可以使用如下代码:
```python
import pandas as pd
import mysql.connector
# 建立数据库连接
conn = mysql.connector.connect(host='localhost', port=3306, user='root', password='password', database='stock')
# 从数据库中读取数据
sql = "SELECT * FROM stock_data WHERE stock_code='000001' ORDER BY trade_date DESC LIMIT 100"
df = pd.read_sql(sql, con=conn)
# 关闭数据库连接
conn.close()
```
这里假设数据库名为`stock`,表名为`stock_data`,股票代码为`000001`,并且数据库用户名为`root`,密码为`password`。`LIMIT 100`表示读取最近的100天的数据,`ORDER BY trade_date DESC`表示按照交易日期倒序排列。
接下来将查询结果返回DataFrame里的数据,并直接保存到Excel文件:
```python
# 将查询结果保存到Excel文件
df.to_excel('stock_data.xlsx', index=False)
```
其中`index=False`表示不保存行索引。
最后绘制日收盘价格走势、5天移动平均线、10天移动平均线:
```python
import matplotlib.pyplot as plt
# 绘制日收盘价格走势
plt.plot(df['trade_date'], df['close'], label='Close')
# 计算5天移动平均线和10天移动平均线
df['ma5'] = df['close'].rolling(5).mean()
df['ma10'] = df['close'].rolling(10).mean()
# 绘制5天移动平均线和10天移动平均线
plt.plot(df['trade_date'], df['ma5'], label='MA5')
plt.plot(df['trade_date'], df['ma10'], label='MA10')
# 设置图例和标题
plt.legend()
plt.title('Stock Data')
# 显示图形
plt.show()
```
其中`rolling`函数可以计算滑动窗口下的平均值,这里分别计算了5天移动平均线和10天移动平均线。最后使用`plt`模块绘制图形,包括日收盘价格走势、5天移动平均线和10天移动平均线,并设置图例和标题,最后调用`show()`方法显示图形。
阅读全文