您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# pandas文件读取和保存的示例分析
## 一、前言
在数据分析和处理领域,pandas库作为Python的核心工具之一,其强大的数据读写能力极大地简化了数据科学家的工作流程。本文将通过具体示例,系统讲解pandas支持的各种文件格式的读取和保存方法,包括CSV、Excel、JSON、SQL数据库等常见格式,并针对实际应用场景提供最佳实践建议。
## 二、CSV文件操作
### 2.1 读取CSV文件
CSV(Comma-Separated Values)是最常用的平面文件格式,pandas提供`read_csv()`函数实现高效读取:
```python
import pandas as pd
# 基础读取
df = pd.read_csv('data.csv')
# 常用参数示例
df = pd.read_csv('data.csv',
sep=';', # 指定分隔符
header=0, # 指定标题行
index_col=0, # 指定索引列
dtype={'age': int}, # 指定列数据类型
na_values=['NA']) # 指定缺失值标识
特殊场景处理:
- 大文件分块读取:chunksize=10000
- 非标准编码处理:encoding='gbk'
- 跳过指定行:skiprows=[1,3]
使用to_csv()
方法保存数据:
df.to_csv('output.csv',
index=False, # 不保存索引
columns=['col1','col2'], # 选择保存列
float_format='%.2f') # 浮点数格式
性能优化技巧:
- 压缩输出:compression='gzip'
- 分批写入:mode='a'
(追加模式)
需安装openpyxl
或xlrd
引擎:
# 读取单个sheet
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 读取整个文件
xls = pd.ExcelFile('data.xlsx')
df_dict = {sheet: xls.parse(sheet) for sheet in xls.sheet_names}
注意事项: - 处理合并单元格需额外清洗 - 大数据量建议先转为CSV处理
with pd.ExcelWriter('output.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet2')
# 设置格式
df.to_excel('output.xlsx',
float_format="%.2f",
freeze_panes=(1,0)) # 冻结首行
# 标准JSON
df = pd.read_json('data.json')
# 嵌套JSON处理
df = pd.json_normalize(data,
record_path='students',
meta=['school_info'])
df.to_json('output.json',
orient='records', # 多种格式可选
date_format='iso',
force_ascii=False) # 中文支持
import sqlalchemy
# 创建连接
engine = sqlalchemy.create_engine('postgresql://user:pass@host/db')
# 读取数据
df = pd.read_sql('SELECT * FROM table', con=engine)
# 参数化查询
df = pd.read_sql_query('SELECT * FROM employees WHERE age > %s',
params=(30,),
con=engine)
df.to_sql('table_name',
con=engine,
if_exists='append', # 追加模式
index=False,
chunksize=1000) # 分批写入
# 保存
df.to_feather('data.feather')
# 读取
df = pd.read_feather('data.feather')
# 保存
df.to_parquet('data.parquet',
engine='pyarrow',
compression='snappy')
# 读取
df = pd.read_parquet('data.parquet')
性能对比(测试数据:1GB CSV):
格式 | 读取时间 | 写入时间 | 文件大小 |
---|---|---|---|
CSV | 3.2s | 2.8s | 1.0GB |
Feather | 0.4s | 0.3s | 420MB |
Parquet | 0.6s | 0.7s | 380MB |
# 从网页读取表格
dfs = pd.read_html('https://example.com/tables.html')
# 保存为HTML
df.to_html('table.html', classes='table-striped')
# 从剪贴板读取
df = pd.read_clipboard()
# 写入剪贴板
df.to_clipboard(excel=True) # 保持Excel格式
编码问题处理:
encoding='gb18030'
内存优化技巧:
dtypes = {'id': 'int32', 'price': 'float32'}
df = pd.read_csv('large.csv', dtype=dtypes)
路径处理建议:
from pathlib import Path
data_path = Path('data/')
df.to_csv(data_path / 'output.csv')
异常处理机制:
try:
df = pd.read_csv('data.csv')
except FileNotFoundError:
print("文件不存在,请检查路径")
except pd.errors.EmptyDataError:
print("空文件错误")
pandas提供了丰富的数据接口支持,掌握不同格式的读写方法能够显著提升数据处理效率。根据实际场景选择合适格式:
通过合理设置参数和采用性能优化技巧,可以处理从KB级到TB级的各种数据任务。
附录:常用参数速查表
方法 | 关键参数 | 说明 |
---|---|---|
read_csv() | sep, dtype, parse_dates | 指定分隔符/类型/日期解析 |
to_excel() | sheet_name, freeze_panes | 工作表名/冻结窗格 |
read_sql() | params, chunksize | 参数化查询/分块读取 |
to_parquet() | engine, compression | 选择引擎/压缩算法 |
”`
注:本文代码示例基于pandas 1.3+版本,部分功能需依赖pyarrow、openpyxl等扩展库。实际应用时请根据具体需求调整参数配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。