Pandas数据加载
在数据科学和机器学习的流程中,数据的加载与存储是非常重要的一环。Pandas是Python中用于数据处理的强大库,它提供了多种方式来加载和保存数据,支持不同的数据格式,如CSV、Excel以及数据库(例如MySQL)。本篇博客将详细介绍如何使用Pandas来加载和保存数据。
基本数据创建与操作
首先,我们通过Pandas创建一个基本的DataFrame
,并填充一些随机生成的数据。以下是代码示例:
python
import numpy as np
import pandas as pd
# 创建一个DataFrame,包含8行3列,随机整数数据
df = pd.DataFrame(np.random.randint(0, 100, size=(8, 3)), columns=['Chinese', 'Math', 'English'])
# 显示创建的DataFrame
df
3.7.1. CSV 数据加载与存储
CSV(逗号分隔值)是最常见的数据存储格式之一,Pandas提供了简便的API来将数据存储为CSV文件以及从CSV文件加载数据。
1.存储为CSV文件
使用to_csv()
方法可以将DataFrame保存为CSV文件。代码如下:
python
# 存储为CSV文件
df.to_csv("data.csv", header=True, index=False)
参数说明:
header=True
: 表示保存列名。index=False
: 表示不保存行索引。
2 读取CSV文件
使用read_csv()
方法可以读取CSV文件并将其转换为DataFrame。代码如下:
python
# 读取CSV文件
df_csv = pd.read_csv("data.csv")
此外,还可以使用sep
参数来设置分隔符,默认情况下是逗号(,
)。如果数据的分隔符是其他符号(如制表符\t
),可以通过修改sep
来指定。
3.7.2. Excel 数据加载与存储
Excel文件是另一种常见的数据存储格式,Pandas提供了很方便的方法来处理Excel文件。
1 存储为Excel文件
使用to_excel()
方法可以将DataFrame存储为Excel文件。代码如下:
python
# 存储为Excel文件
df.to_excel('data.xlsx', sheet_name='score', header=True, index=False)
参数说明:
sheet_name='score'
: 指定工作表的名称。header=True
: 表示保存列名。index=False
: 表示不保存行索引。
2 读取Excel文件
读取Excel文件时,使用read_excel()
方法。代码如下:
python
# 读取Excel文件
df_excel = pd.read_excel('data.xlsx')
同样,你可以使用sheet_name
来指定要读取的工作表名称。
3.7.3. 从MySQL加载与存储数据
除了文件格式,Pandas还可以直接与数据库(例如MySQL)进行交互。为了从MySQL数据库加载和保存数据,首先需要安装pymysql
和sqlalchemy
。
1 安装依赖
在命令行中执行以下命令来安装所需的库:
pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple
2 存储数据到MySQL
通过SQLAlchemy
库,我们可以连接MySQL数据库,并使用to_sql()
方法将DataFrame存储到数据库中的指定表。代码如下:
python
from sqlalchemy import create_engine, text
# 连接MySQL数据库
conn = create_engine('mysql+pymysql://root:123456@localhost:3306/db_student')
# 将DataFrame存储到数据库
df.to_sql(
name='score', # 数据库表名
con=conn, # 数据库连接
index=False, # 是否保存行索引
if_exists='append' # 如果表存在,追加数据
)
参数说明:
name='score'
: 指定要存储的数据库表名。if_exists='append'
: 如果表已经存在,数据将被追加。
3 从MySQL读取数据
使用read_sql()
方法可以执行SQL查询并将结果加载为DataFrame。代码如下:
python
# 执行SQL查询,读取MySQL数据
sql = "SELECT * FROM score"
df_mysql = pd.read_sql(sql=text(sql), con=conn)