(1)用Pandas读取MySQL数据库中某只股票100天的日交易数据,将查询结果返回DataFrame里的数据,直接保存到Excel文件,并绘制日收盘价格走势、5天移动平均线、10天移动平均线。
时间: 2023-11-28 20:49:28 浏览: 25
以下是实现上述需求的Python代码:
```python
# 导入必要的库
import pandas as pd
import pymysql
import matplotlib.pyplot as plt
# 连接MySQL数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='stock')
# 查询语句,获取某只股票100天的日交易数据
sql = "SELECT * FROM stock_data WHERE stock_code='000001' LIMIT 100"
# 使用Pandas读取MySQL查询结果
df = pd.read_sql(sql, conn)
# 将DataFrame数据保存到Excel文件
df.to_excel('stock_data.xlsx', index=False)
# 绘制日收盘价格走势、5天移动平均线、10天移动平均线
plt.plot(df['date'], df['close'], label='Close')
plt.plot(df['date'], df['close'].rolling(5).mean(), label='MA5')
plt.plot(df['date'], df['close'].rolling(10).mean(), label='MA10')
plt.legend()
plt.show()
```
注意,上述代码中的数据库连接信息需要根据实际情况进行修改。同时,需要确保MySQL数据库中存在名为 `stock` 的数据库,并在其中创建名为 `stock_data` 的数据表,数据表结构可以参考以下SQL语句:
```sql
CREATE TABLE `stock_data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`stock_code` varchar(10) NOT NULL,
`date` date NOT NULL,
`open` decimal(10,2) NOT NULL,
`high` decimal(10,2) NOT NULL,
`low` decimal(10,2) NOT NULL,
`close` decimal(10,2) NOT NULL,
`volume` bigint(20) NOT NULL,
`amount` decimal(18,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
在实际应用中,需要替换代码中的 `stock_code` 和 `LIMIT` 参数为实际需要查询的股票代码和查询的天数。