首页 / 数据采集与处理 / 第7章 数据存储与管理

第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、腾讯云数据库)的基本概念

自学自检小问题

  1. CSV和Excel各有什么优缺点?什么场景选哪个?
  2. to_csv的encoding参数为什么要用'utf-8-sig'而不是'utf-8'?
  3. to_sql的if_exists参数三个选项有什么区别?
  4. 为什么数据量大时推荐用数据库而不是Excel?
  5. 写出一个自动备份并保留最近5个版本的代码思路。
基础巩固层练习
0/5
第1题 选择题
Pandas中,将DataFrame写入MySQL数据库应使用?
df.to_csv()
df.to_excel()
df.to_sql()
df.to_json()
答案解析
df.to_sql()用于将DataFrame写入SQL数据库。to_csv()保存为CSV,to_excel()保存为Excel,to_json()保存为JSON。
第2题 选择题
将DataFrame保存为Excel文件,应使用?
df.to_csv()
df.to_excel()
df.to_sql()
df.to_json()
答案解析
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?
数据库更便宜
数据库支持并发访问和高效查询
Excel不能保存数据
数据库界面更美观
答案解析
数据库支持并发访问、高效查询、事务处理、权限管理等,适合大数据量和多人协作场景。
0/0