第7章 数据存储与管理
理论4课时 + 上机4课时 | 难度:中等
7.1 保存为CSV文件
CSV是最通用的数据交换格式,纯文本、体积小、几乎所有软件都能打开。注意中文编码问题。
import pandas as pd
# 保存为CSV(推荐带BOM的utf-8,Excel打开不乱码)
df.to_csv('output.csv', index=False, encoding='utf-8-sig')
# 参数说明:
# index=False 不保存行索引
# encoding='utf-8-sig' 带BOM的UTF-8,Excel直接打开中文不乱码
# 只保存指定列
df[['姓名', '成绩']].to_csv('subset.csv', index=False)
7.2 保存为Excel文件
Excel格式适合需要给非技术人员查看的场景,可以设置多个工作表。
# 保存为Excel(需要openpyxl库)
df.to_excel('output.xlsx', sheet_name='数据', index=False)
# 保存多个工作表
with pd.ExcelWriter('report.xlsx') as writer:
df1.to_excel(writer, sheet_name='原始数据', index=False)
df2.to_excel(writer, sheet_name='清洗后', index=False)
df3.to_excel(writer, sheet_name='统计汇总', index=False)
7.3 保存为JSON文件
JSON是Web开发中最常用的数据格式,API之间传递数据几乎都是JSON。
# DataFrame转JSON
df.to_json('output.json', orient='records', force_ascii=False)
# orient参数:
# 'records' - 每行一个对象,最常用
# 'index' - 以行索引为键
# 'columns' - 以列名为键
# 读取JSON
df = pd.read_json('output.json')
7.4 写入MySQL数据库
当数据量大、需要多人共享、需要频繁查询时,应该使用数据库。MySQL是最流行的开源关系型数据库。
# 安装依赖:pip install pymysql sqlalchemy
from sqlalchemy import create_engine
import pandas as pd
# 创建数据库连接
# 格式:mysql+pymysql://用户名:密码@主机:端口/数据库名
engine = create_engine('mysql+pymysql://root:密码@localhost:3306/testdb')
# 写入数据表(如果表不存在则自动创建)
df.to_sql('students', engine, if_exists='replace', index=False)
# if_exists参数:
# 'replace' - 如果表存在,删除重建
# 'append' - 如果表存在,追加数据
# 'fail' - 如果表存在,报错
# 从数据库读取数据
df_from_db = pd.read_sql('SELECT * FROM students WHERE 成绩 > 80', engine)
7.5 数据备份策略
数据是宝贵的资产,一定要做好备份。基本策略:定期备份、多地存储、版本保留。
import shutil
from datetime import datetime
# 策略1:带时间戳的文件备份
now = datetime.now().strftime('%Y%m%d_%H%M%S')
shutil.copy('important_data.csv', f'backup/important_data_{now}.csv')
# 策略2:自动保留最近N个备份
import os
import glob
backup_files = sorted(glob.glob('backup/*.csv'))
if len(backup_files) > 10: # 只保留最近10个
for old in backup_files[:-10]:
os.remove(old)
自学拓展素材
- 官方文档:SQLAlchemy文档(docs.sqlalchemy.org)
- 视频教程:B站搜索"Python操作MySQL数据库"
- 工具:Navicat或DBeaver(图形化数据库管理工具,免费版够用)
- 练习:在本地安装MySQL,创建数据库,完成数据的写入和查询
- 阅读:了解云数据库(阿里云RDS、腾讯云数据库)的基本概念
自学自检小问题
- CSV和Excel各有什么优缺点?什么场景选哪个?
- to_csv的encoding参数为什么要用'utf-8-sig'而不是'utf-8'?
- to_sql的if_exists参数三个选项有什么区别?
- 为什么数据量大时推荐用数据库而不是Excel?
- 写出一个自动备份并保留最近5个版本的代码思路。
基础巩固层练习
0/5
第1题
选择题
Pandas中,将DataFrame写入MySQL数据库应使用?
答案解析
df.to_sql()用于将DataFrame写入SQL数据库。to_csv()保存为CSV,to_excel()保存为Excel,to_json()保存为JSON。
第2题
选择题
将DataFrame保存为Excel文件,应使用?
答案解析
df.to_excel()用于将DataFrame保存为Excel文件。需要安装openpyxl库作为引擎。
第3题
判断题
to_csv的encoding参数使用'utf-8-sig'是为了让Excel打开中文不乱码。
答案解析
utf-8-sig带BOM(字节顺序标记),Excel能正确识别编码,打开时中文不会乱码。
第4题
填空题
to_sql的if_exists参数有三个选项:'replace'、'append'和______。
答案解析
if_exists参数三个选项:replace(删除重建)、append(追加数据)、fail(表存在则报错)。
第5题
选择题
为什么数据量大时推荐使用数据库而不是Excel?
答案解析
数据库支持并发访问、高效查询、事务处理、权限管理等,适合大数据量和多人协作场景。
0/0