Pandas数据如何读取与导出
作者:王小工
Pandas是一个强大的Python库,用于数据处理和分析,它提供了多种文件格式的数据读取和导出方法,包括CSV、Excel、SQL数据库、JSON等,常用的数据读取方法为`pd.read_csv()`、`pd.read_excel()`等,导出方法为`to_csv()`、`to_excel()`等
Pandas数据读取与导出
Pandas 是一个强大的 Python 库,用于数据处理和分析。它提供了许多函数来读取和导入数据,支持多种文件格式,如 CSV、Excel、SQL 数据库、JSON 等。
以下是一些常用的数据读取和导出方法:
常用方法
| 格式 | 文件格式 | 读取函数 | 写入(导出)函数 |
|---|---|---|---|
| binary | Excel | read_excel | to_excel |
| text | CSV | read_csv read_table | to_csv |
| text | JSON | read_json | to_json |
| text | 网页表格HTML | read_html | to_html |
| text | 剪切板 | read_clipboard | to_clipboard |
| SQ!L | SQL | read_sql | to_sql |
| XML | read_xml | read_xml | |
| text | Markdown | to_markdown |
其中:
- 读取函数一般会赋值给一个变量 df, df = pd.read_()
- 输出函数是将变量自身进行操作并输出 df.to_()
常用函数方法
Excel 对象
~ pd.ExcelFile 对象 ~ pd.ExcelWriter 对象 ~ pd.ExcelWriter 对象的属性和方法
读取数据
~ pd.read_csv() ~ pd.read_excel() ~ pd.json_normalize() ~ pd.read_pickle() ~ pd.read_table() ~ pd.DataFrame.from_dict() 从字典创建 DataFrame ~ pd.read_clipboard() 从剪贴板读取数据 ~ pd.read_json() 读取 JSON ~ pd.read_sql() 读取数据库数据 ~ pd.read_fwf() 读取固定宽度格式文件 ~ pd.read_html() 从 HTML 文档提取表格数据 ~ pd.read_parquet() 读取 Parquet 文件
导出数据
~ to_csv() 导出为 CSV文件 ~ to_excel() 导出为 Excel 文件 ~ to_dict() 输出字典 ~ to_pickle() 序列化为 pickle 文件 ~ to_json() 转换为 JSON 格式字符串 ~ to_html() 转换为 HTML 表格格式 ~ to_sql() 写入到关系型数据库 ~ to_parquet() 保存为 parquet 文件
数据读取
- 读取 CSV 文件
import pandas as pd
df = pd.read_csv('file.csv')
# 可以使用参数来调整读取行为,如分隔符、缺失值标记、列名等- 读取 Excel 文件
df = pd.read_excel('file.xlsx', sheet_name='Sheet1')
# 可以指定工作表名称或索引,或者使用 sheet_name=None 来读取所有工作表- 从 SQL 数据库读取
import sqlite3 # 或其他数据库连接库
conn = sqlite3.connect('database.db')
df = pd.read_sql_query('SELECT * FROM table_name', conn)
conn.close()
# 对于其他数据库,如 MySQL、PostgreSQL,需要使用相应的连接库和驱动- 读取 JSON 文件
df = pd.read_json('file.json')
# 可以使用 orient 参数来指定 JSON 数据的布局- 读取 HTML 表格
df = pd.read_html('http://example.com/page_with_table.html')[0]
# read_html 返回一个 DataFrame 列表,通常使用索引 [0] 来获取第一个表格- 从剪贴板读取
df = pd.read_clipboard() # 这对于从 Excel 等应用程序中复制数据特别有用
数据导出
- 导出到 CSV 文件
df.to_csv('output_file.csv', index=False)
# index=False 表示不导出 DataFrame 的索引- 导出到 Excel 文件
df.to_excel('output_file.xlsx', sheet_name='Sheet1', index=False)
# 可以指定工作表名称和其他选项,如引擎(对于较新的 Pandas 版本,默认引擎为 'openpyxl')- 导出到 SQL 数据库
conn = sqlite3.connect('database.db')
df.to_sql('table_name', conn, if_exists='replace', index=False)
conn.close()
# if_exists 参数可以是 'fail'(如果表存在则引发错误)、'replace'(替换表)、'append'(在表中添加数据)- 导出到 JSON 文件
df.to_json('output_file.json', orient='records', lines=True)
# orient 参数可以指定 JSON 数据的布局,lines=True 表示每行是一个 JSON 对象- 导出到 HTML 文件
with open('output_file.html', 'w') as f:
f.write(df.to_html())
# 也可以使用 pandas 提供的 to_html() 方法生成 HTML 字符串,然后保存到文件中- 导出到 Excel 的多个工作表
with pd.ExcelWriter('output_file_with_sheets.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)
# 使用 ExcelWriter 上下文管理器可以方便地写入多个工作表注意事项:
- 文件路径:确保文件路径正确,并且程序有适当的读写权限。
- 数据类型:在导出时,注意数据类型的兼容性,特别是当数据包含特殊字符或日期时间类型时。
- 依赖项:某些导出方法(如到 SQL 数据库)可能需要额外的库和数据库驱动。
- 性能:对于大型数据集,导出到某些格式(如 Excel)可能会很慢,并且可能会受到内存限制。在这种情况下,考虑将数据分批导出或使用更适合大数据集的格式(如 CSV)。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
