6.7 数据读取实战案例
Pandas数据读取实战案例:CSV、Excel与数据库
本章节介绍Pandas中读取CSV、Excel文件和数据库的实战案例,包括基础配置与数据查看、大数据分批处理和数据库连接,适合数据科学初学者快速上手。
推荐工具
Pandas数据读取实战案例
在本章节中,我们将通过三个实战案例,学习如何使用Pandas高效读取和处理不同数据源。Pandas是Python中强大的数据处理库,掌握数据读取是数据分析的第一步。
案例1:读取CSV/Excel文件,完成基础配置与数据查看
读取CSV文件
CSV(Comma-Separated Values)是常见的数据格式,Pandas的read_csv()函数可以轻松读取。以下是基本操作:
import pandas as pd
# 读取CSV文件,指定文件路径
# 基础配置示例:设置编码为utf-8,分隔符为逗号
# encoding参数防止乱码,sep参数定义分隔符,默认是逗号
# header参数指定表头行,默认为0(第一行)
df_csv = pd.read_csv('data.csv', encoding='utf-8', sep=',', header=0)
# 数据查看:了解数据结构和内容
# head()查看前5行,tail()查看后5行
print(df_csv.head()) # 查看前几行
print(df_csv.tail()) # 查看后几行
# info()查看数据基本信息,包括列名、类型和非空值数量
print(df_csv.info())
# describe()生成统计摘要,如均值、标准差等
print(df_csv.describe())
小贴士:如果CSV文件较大,可以先用nrows参数读取前几行预览,例如pd.read_csv('data.csv', nrows=100)。
读取Excel文件
Excel文件也很常见,使用read_excel()函数:
# 读取Excel文件,可以指定工作表
# sheet_name参数可以是工作表名称或索引,默认为0
# 其他配置参数类似CSV,如header、index_col
df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1', header=0)
# 数据查看
print(df_excel.head())
print(df_excel.info())
总结:案例1帮助您快速入门,读取本地文件并初步探索数据,确保无错误配置,如编码匹配。
案例2:大数据量CSV文件分批读取与处理
处理大型CSV文件时,直接读取可能耗尽内存。Pandas提供了chunksize参数,允许分批读取。
# 分批读取CSV文件,每批10000行
chunksize = 10000 # 定义每批行数,根据内存调整
chunk_list = [] # 存储处理后的chunks
# 使用read_csv的chunksize参数迭代读取
for chunk in pd.read_csv('large_data.csv', chunksize=chunksize, encoding='utf-8'):
# 对每个chunk进行处理,例如过滤数据
# 假设有一列'age',我们筛选年龄大于30的数据
filtered_chunk = chunk[chunk['age'] > 30]
# 可选:进行简单统计或转换
chunk['new_column'] = chunk['value'] * 2 # 添加新列
# 将处理后的chunk添加到列表
chunk_list.append(filtered_chunk)
# 合并所有chunks成一个完整的DataFrame
final_df = pd.concat(chunk_list, ignore_index=True)
print(f"处理后的数据形状:{final_df.shape}")
print(final_df.head())
优势:分批处理减少内存占用,适用于数据清洗、聚合等操作。
案例3:读取数据库表数据,转换为DataFrame
从数据库读取数据是数据分析的常见需求。Pandas支持通过SQLAlchemy连接多种数据库。
准备环境
首先,安装必要库:pip install pandas sqlalchemy pymysql(以MySQL为例)。
读取数据库数据
import pandas as pd
from sqlalchemy import create_engine
# 创建数据库连接
# 以MySQL为例,格式为:dialect+driver://username:password@host/database
# 替换为您的数据库信息
database_url = 'mysql+pymysql://user:password@localhost/my_database'
engine = create_engine(database_url)
# 执行SQL查询,将结果读取为DataFrame
# 可以读取整个表,或使用复杂查询
query = "SELECT * FROM employees" # 示例:读取employees表
df_db = pd.read_sql(query, con=engine)
# 数据查看
print(df_db.head())
print(df_db.info())
# 关闭连接(可选,通常引擎会管理)
engine.dispose()
扩展:
- 对于其他数据库(如PostgreSQL、SQLite),只需调整连接字符串。
- 使用
read_sql_table()函数可以直接读取表,无需写SQL。
总结
通过本章节的三个案例,您应该能够:
- 使用
read_csv()和read_excel()读取本地文件,并进行基础数据探索。 - 用
chunksize参数处理大数据CSV,避免内存问题。 - 连接数据库,将表数据转换为DataFrame,支持SQL查询。
多加练习,结合实际项目,提升数据读取和处理技能。Pandas是数据科学的重要工具,熟练掌握这些基础操作将为后续分析奠定基础。
开发工具推荐