第二章:数据输入与输出


文档摘要

第二章:数据输入与输出 第二章:Pandas数据输入与输出 2.1 常用数据格式 Pandas支持读取和写入多种数据格式,包括: CSV (Comma Separated Values):逗号分隔值文件,是最常用的数据存储格式之一。 Excel: Microsoft Excel文件,Pandas可以读取和写入.xls和.xlsx格式的文件。 SQL Database: 通过SQLAlchemy库,Pandas可以连接各种SQL数据库,进行数据的读取和写入。 JSON (JavaScript Object Notation):一种轻量级的数据交换格式,常用于Web API。 HTML: Pandas可以解析HTML表格数据。

第二章:数据输入与输出

第二章:Pandas数据输入与输出

2.1 常用数据格式

Pandas支持读取和写入多种数据格式,包括:

  • CSV (Comma Separated Values):逗号分隔值文件,是最常用的数据存储格式之一。

  • Excel: Microsoft Excel文件,Pandas可以读取和写入.xls和.xlsx格式的文件。

  • SQL Database: 通过SQLAlchemy库,Pandas可以连接各种SQL数据库,进行数据的读取和写入。

  • JSON (JavaScript Object Notation):一种轻量级的数据交换格式,常用于Web API。

  • HTML: Pandas可以解析HTML表格数据。

  • Pickle: Python对象序列化格式,用于存储Python对象。

  • Parquet: 列式存储格式,适用于大数据分析。

2.2 CSV文件的读写

CSV文件是最常用的数据格式之一,Pandas提供了read_csv()函数用于读取CSV文件,to_csv()方法用于将DataFrame写入CSV文件。

2.2.1 读取CSV文件

import pandas as pd # 读取CSV文件 df = pd.read_csv('data.csv') # 假设当前目录下有名为data.csv的文件 print(df.head()) # 显示前几行数据

常用参数:

  • filepath_or_buffer: 文件路径或URL。

  • sep: 分隔符,默认为逗号(,)。

  • header: 指定哪一行作为列名,默认为0(第一行)。如果CSV文件没有列名,可以设置为None

  • names: 自定义列名。

  • index_col: 指定哪一列作为索引列。

  • usecols: 指定读取哪些列。

  • dtype: 指定列的数据类型。

  • na_values: 指定哪些值被认为是缺失值。

  • skiprows: 跳过指定的行。

  • nrows: 读取指定的行数。

  • encoding: 指定文件编码,例如utf-8, gbk等。

示例:

# 读取CSV文件,指定分隔符、列名和索引列 df = pd.read_csv('data.csv', sep=';', names=['col1', 'col2', 'col3'], index_col='col1') print(df.head()) # 读取CSV文件,指定编码和缺失值 df = pd.read_csv('data.csv', encoding='gbk', na_values=['NA', 'NULL']) print(df.head())

2.2.2 写入CSV文件

# 将DataFrame写入CSV文件 df.to_csv('output.csv', index=False) # index=False 不写入索引列

常用参数:

  • path_or_buf: 文件路径。

  • sep: 分隔符,默认为逗号(,)。

  • na_rep: 缺失值表示,默认为空字符串。

  • float_format: 浮点数格式。

  • columns: 指定写入哪些列。

  • header: 是否写入列名,默认为True

  • index: 是否写入索引,默认为True

  • index_label: 索引列的列名。

  • encoding: 指定文件编码。

示例:

# 将DataFrame写入CSV文件,指定分隔符和编码 df.to_csv('output.csv', sep=';', encoding='utf-8') # 将DataFrame写入CSV文件,只写入指定的列 df.to_csv('output.csv', columns=['col1', 'col2'])

2.3 Excel文件的读写

Pandas提供了read_excel()函数用于读取Excel文件,to_excel()方法用于将DataFrame写入Excel文件。 需要安装 openpyxlxlrd 库来支持 Excel 文件的读写。

pip install openpyxl # 或 pip install xlrd

2.3.1 读取Excel文件

# 读取Excel文件 df = pd.read_excel('data.xlsx', sheet_name='Sheet1') # 默认读取第一个sheet print(df.head())

常用参数:

  • io: 文件路径或文件对象。

  • sheet_name: 指定要读取的sheet,可以是sheet名或sheet索引(从0开始)。

  • header: 指定哪一行作为列名,默认为0。

  • names: 自定义列名。

  • index_col: 指定哪一列作为索引列。

  • usecols: 指定读取哪些列。

  • dtype: 指定列的数据类型。

  • na_values: 指定哪些值被认为是缺失值。

  • skiprows: 跳过指定的行。

  • nrows: 读取指定的行数。

示例:

# 读取Excel文件,指定sheet名和索引列 df = pd.read_excel('data.xlsx', sheet_name='Sheet2', index_col='ID') print(df.head()) # 读取Excel文件,只读取指定的列 df = pd.read_excel('data.xlsx', usecols=['A', 'C', 'E']) print(df.head())

2.3.2 写入Excel文件

# 将DataFrame写入Excel文件 df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)

常用参数:

  • excel_writer: 文件路径或ExcelWriter对象。

  • sheet_name: 指定sheet名。

  • na_rep: 缺失值表示。

  • float_format: 浮点数格式。

  • columns: 指定写入哪些列。

  • header: 是否写入列名,默认为True

  • index: 是否写入索引,默认为True

  • index_label: 索引列的列名。

  • startrow: 起始行,默认为0。

  • startcol: 起始列,默认为0。

示例:

# 将DataFrame写入Excel文件,指定sheet名和不写入索引 df.to_excel('output.xlsx', sheet_name='Results', index=False) # 将多个DataFrame写入同一个Excel文件的不同sheet with pd.ExcelWriter('output.xlsx') as writer: df1.to_excel(writer, sheet_name='Sheet1', index=False) df2.to_excel(writer, sheet_name='Sheet2', index=False)

2.4 SQL数据库的读写

Pandas可以通过SQLAlchemy库连接各种SQL数据库,进行数据的读取和写入。

2.4.1 读取SQL数据

from sqlalchemy import create_engine # 创建数据库连接 engine = create_engine('sqlite:///data.db') # 连接到SQLite数据库 # 读取SQL数据 df = pd.read_sql('SELECT * FROM my_table', engine) print(df.head())

常用参数:

  • sql: SQL查询语句或表名。

  • con: 数据库连接。

  • index_col: 指定哪一列作为索引列。

  • coerce_float: 尝试将非字符串列转换为浮点数。

  • params: SQL查询的参数。

  • chunksize: 每次读取的行数,用于处理大型数据集。

示例:

# 读取SQL数据,指定索引列 df = pd.read_sql('SELECT * FROM my_table', engine, index_col='id') print(df.head()) # 使用参数化查询 query = "SELECT * FROM my_table WHERE column1 = :value" df = pd.read_sql(query, engine, params={'value': 'some_value'}) print(df.head())

2.4.2 写入SQL数据

# 将DataFrame写入SQL数据库 df.to_sql('my_table', engine, if_exists='replace', index=False)

常用参数:

  • name: 表名。

  • con: 数据库连接。

  • if_exists: 如果表存在,如何处理:

    • 'fail': 抛出ValueError异常。

    • 'replace': 删除表并创建新表。

    • 'append': 将数据追加到现有表。

  • index: 是否写入索引,默认为True

  • index_label: 索引列的列名。

  • chunksize: 每次写入的行数。

  • dtype: 指定列的数据类型。

示例:

# 将DataFrame写入SQL数据库,如果表存在则追加数据 df.to_sql('my_table', engine, if_exists='append', index=False) # 指定列的数据类型 from sqlalchemy import types dtype_dict = {'column1': types.VARCHAR(255), 'column2': types.INTEGER()} df.to_sql('my_table', engine, if_exists='replace', index=False, dtype=dtype_dict)

2.5 JSON文件的读写

Pandas提供了read_json()函数用于读取JSON文件,to_json()方法用于将DataFrame写入JSON文件。

2.5.1 读取JSON文件

# 读取JSON文件 df = pd.read_json('data.json') print(df.head())

常用参数:

  • path_or_buf: 文件路径或URL。

  • orient: JSON结构类型:

    • 'split': dict like {'index' -> [index], 'columns' -> [columns], 'data' -> [values]}

    • 'records': list like [{column -> value}, ... , {column -> value}]

    • 'index': dict like {index -> {column -> value}}

    • 'columns': dict like {column -> {index -> value}}

    • 'values': just the values array

    • 'table': dict like {'schema': {schema}, 'data': {data}}

  • typ: 返回对象类型 (Series or DataFrame), 默认为 'frame'

  • dtype: 指定列的数据类型。

示例:

# 读取JSON文件,指定orient df = pd.read_json('data.json', orient='records') print(df.head())

2.5.2 写入JSON文件

# 将DataFrame写入JSON文件 df.to_json('output.json', orient='records')

常用参数:

  • path_or_buf: 文件路径。

  • orient: JSON结构类型,同read_json()

  • date_format: 日期格式:

    • 'epoch': epoch timestamp

    • 'iso': ISO8601

  • double_precision: 浮点数精度。

  • force_ascii: 是否强制使用ASCII编码。

  • date_unit: 日期单位 (e.g. 's', 'ms', 'us', 'ns')

  • default_handler: 用于处理无法转换为JSON的对象的函数。

示例:

# 将DataFrame写入JSON文件,指定orient和日期格式 df.to_json('output.json', orient='index', date_format='iso')

2.6 其他数据格式

除了以上常用的数据格式,Pandas还支持读取和写入其他数据格式,例如HTML, Pickle, Parquet等。具体使用方法可以参考Pandas官方文档。

2.7 数据输入输出流程图

2.8 总结

Pandas提供了丰富的数据输入输出功能,可以方便地读取和写入各种数据格式。熟练掌握这些方法,可以大大提高数据分析的效率。 在实际应用中,需要根据数据的具体格式和需求,选择合适的函数和参数。 同时,需要注意数据编码、缺失值处理等问题,保证数据的准确性和完整性。

希望这篇文章能够帮助你更好地理解和使用Pandas的数据输入输出功能。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U