看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)如何从 MySQL 中读取数据到 pandas 的 DataFrame。
首先,确保安装了 pandas、SQLAlchemy 和 pymysql 这三个库。这些库分别用于数据处理、数据库连接以及 MySQL 驱动。
pip install pandas sqlalchemy pymysql
假设我们有一个名为 test_db 的 MySQL 数据库,其中有一个表 employees,结构如下:
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT,
department VARCHAR(50),
hire_date DATE
);
插入一些示例数据:
INSERT INTO employees (name, age, department, hire_date) VALUES
('Alice', 30, 'HR', '2020-01-15'),
('Bob', 25, 'Engineering', '2021-03-22'),
('Charlie', 35, 'Marketing', '2019-07-10'),
('David', 28, 'Engineering', '2022-05-18');
Python 代码如下:
import pandas as pd
from sqlalchemy import create_engine
# 1. 创建数据库连接
engine = create_engine('mysql+pymysql://root:password@localhost:3306/test_db')
# 2. 定义 SQL 查询
query = "SELECT * FROM employees"
# 3. 读取所有数据
df_all = pd.read_sql(query, engine)
print("所有员工数据:")
print(df_all)
# 4. 指定索引列
df_index = pd.read_sql(query, engine, index_col='id')
print("\n指定索引列后的数据:")
print(df_index)
# 5. 参数化查询
department = 'Engineering'
df_param = pd.read_sql(
"SELECT * FROM employees WHERE department = %s",
engine,
params=(department,)
)
print(f"\n部门为 {department} 的员工:")
print(df_param)
# 6. 解析日期列
df_dates = pd.read_sql(
query,
engine,
parse_dates=['hire_date']
)
print("\n解析日期列后的数据类型:")
print(df_dates.dtypes)
# 7. 分块读取数据
chunksize = 2
print("\n分块读取数据:")
chunks = pd.read_sql(query, engine, chunksize=chunksize)
for i, chunk in enumerate(chunks):
print(f"Chunk {i+1}:")
print(chunk)
查看相关链接中的知识。
(完)
更新时间:Oct. 7, 2024, 8:18 a.m. 标签:pandas python 习题 mysql