用pandas读取MySQL数据库中,某只股票100天的日交易数据,将查询结果返回dataframe里的数据,直接保存到Excel文件中
时间: 2024-03-21 12:40:33 浏览: 93
好的,可以使用pandas和SQLAlchemy库来实现这个任务。请先确保已经安装好了这两个库。
下面是代码示例:
```python
import pandas as pd
from sqlalchemy import create_engine
# 连接MySQL数据库
engine = create_engine('mysql+pymysql://username:password@host:port/database')
# 查询语句
query = "SELECT * FROM stock_data WHERE stock_code='000001' LIMIT 100"
# 读取数据到DataFrame
df = pd.read_sql_query(query, engine)
# 将数据保存到Excel文件
df.to_excel('stock_data.xlsx', index=False)
```
其中,需要替换的部分包括:
- `username`:MySQL数据库的用户名
- `password`:MySQL数据库的密码
- `host`:MySQL数据库的主机名或IP地址
- `port`:MySQL数据库的端口号
- `database`:要查询的数据库名
- `stock_data`:保存股票交易数据的数据表名
- `000001`:股票代码,可以根据需要修改
执行完毕后,会在当前目录下生成一个名为 `stock_data.xlsx` 的Excel文件,其中包含了查询结果的数据。
相关问题
用Pandas读取MySQL数据库中某只股票100天的日交易数据,将查询结果返回DataFrame里的数据,直接保存到Excel文件
可以按照以下步骤操作:
1. 导入需要的库:
```python
import pandas as pd
import pymysql
```
2. 连接MySQL数据库:
```python
# 建立连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='stock_db',
charset='utf8mb4'
)
```
其中,`host`、`user`、`password`、`database` 分别是 MySQL 数据库的主机名、用户名、密码和数据库名。`charset` 是指定字符集,一般使用 `utf8mb4`。
3. 查询数据并返回 DataFrame:
```python
# 查询语句
sql = "SELECT * FROM stock_data WHERE stock_code='000001' AND trade_date BETWEEN '20210101' AND '20210410'"
# 使用 Pandas 的 read_sql 函数查询并返回 DataFrame
df = pd.read_sql(sql, conn)
```
其中,`stock_data` 是表名,`stock_code` 是股票代码字段名,`trade_date` 是交易日期字段名。上述 SQL 语句查询的是股票代码为 `000001`,交易日期在 `20210101` 到 `20210410` 期间的数据。
4. 将 DataFrame 保存为 Excel 文件:
```python
# 保存到 Excel 文件
df.to_excel('stock_data.xlsx', index=False)
```
其中,`index=False` 表示不保存 DataFrame 的行索引。
完整代码如下:
```python
import pandas as pd
import pymysql
# 建立连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='stock_db',
charset='utf8mb4'
)
# 查询语句
sql = "SELECT * FROM stock_data WHERE stock_code='000001' AND trade_date BETWEEN '20210101' AND '20210410'"
# 使用 Pandas 的 read_sql 函数查询并返回 DataFrame
df = pd.read_sql(sql, conn)
# 保存到 Excel 文件
df.to_excel('stock_data.xlsx', index=False)
# 关闭连接
conn.close()
```
(1)用Pandas读取MySQL数据库中某只股票100天的日交易数据,将查询结果返回DataFrame里的数据,直接保存到Excel文件,并绘制日收盘价格走势、5天移动平均线、10天移动平均线。
首先需要安装`pandas`和`mysql-connector-python`模块,然后按照以下步骤进行操作:
1. 连接MySQL数据库,获取数据
```python
import mysql.connector
import pandas as pd
# 连接数据库
cnx = mysql.connector.connect(user='user', password='password',
host='localhost', database='stock')
# 查询语句
query = "SELECT * FROM stock_data WHERE stock_code = '000001' LIMIT 100"
# 读取数据
df = pd.read_sql(query, cnx)
# 关闭连接
cnx.close()
```
2. 保存数据到Excel文件
```python
# 保存数据到Excel文件
df.to_excel('000001.xlsx', index=False)
```
3. 绘制日收盘价格走势、5天移动平均线、10天移动平均线
```python
import matplotlib.pyplot as plt
# 绘制日收盘价格走势
plt.plot(df['date'], df['close'], label='close')
# 计算5天移动平均线
ma5 = df['close'].rolling(window=5).mean()
plt.plot(df['date'], ma5, label='MA5')
# 计算10天移动平均线
ma10 = df['close'].rolling(window=10).mean()
plt.plot(df['date'], ma10, label='MA10')
# 设置图例和标题
plt.legend()
plt.title('Stock 000001')
# 显示图像
plt.show()
```
完整代码如下:
```python
import mysql.connector
import pandas as pd
import matplotlib.pyplot as plt
# 连接数据库
cnx = mysql.connector.connect(user='user', password='password',
host='localhost', database='stock')
# 查询语句
query = "SELECT * FROM stock_data WHERE stock_code = '000001' LIMIT 100"
# 读取数据
df = pd.read_sql(query, cnx)
# 关闭连接
cnx.close()
# 保存数据到Excel文件
df.to_excel('000001.xlsx', index=False)
# 绘制日收盘价格走势
plt.plot(df['date'], df['close'], label='close')
# 计算5天移动平均线
ma5 = df['close'].rolling(window=5).mean()
plt.plot(df['date'], ma5, label='MA5')
# 计算10天移动平均线
ma10 = df['close'].rolling(window=10).mean()
plt.plot(df['date'], ma10, label='MA10')
# 设置图例和标题
plt.legend()
plt.title('Stock 000001')
# 显示图像
plt.show()
```
阅读全文