用pandas读取MySQL数据库中,某只股票100天的日交易数据,将查询结果返回dataframe里的数据,直接保存到Excel文件中
时间: 2024-03-21 08:40:33 浏览: 100
好的,可以使用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、matplotlib等库:
```python
import pandas as pd
import mysql.connector
import matplotlib.pyplot as plt
# 连接MySQL数据库
db = mysql.connector.connect(
host="localhost",
user="root",
password="123456",
database="stock"
)
# 查询100天的日交易数据
cursor = db.cursor()
cursor.execute("SELECT date, close_price FROM stock_data WHERE stock_code='000001' ORDER BY date DESC LIMIT 100")
data = cursor.fetchall()
# 将查询结果转为DataFrame
df = pd.DataFrame(data, columns=["date", "close_price"])
df["date"] = pd.to_datetime(df["date"]) # 将日期列转为日期类型
df = df.set_index("date") # 将日期列设为索引
# 计算移动平均线
df["ma5"] = df["close_price"].rolling(5).mean()
df["ma10"] = df["close_price"].rolling(10).mean()
# 将数据保存到Excel文件
df.to_excel("stock_data.xlsx")
# 绘制走势图和移动平均线
plt.plot(df.index, df["close_price"], label="Close Price")
plt.plot(df.index, df["ma5"], label="MA5")
plt.plot(df.index, df["ma10"], label="MA10")
plt.legend()
plt.show()
```
其中,需要根据自己的MySQL数据库配置修改host、user、password和database参数,以及查询语句中的股票代码和查询天数。运行后会生成一个名为stock_data.xlsx的Excel文件,并在窗口中显示走势图和移动平均线。
阅读全文