Python pandas IO读取保存

本文详细介绍了Pandas库中的IO工具,包括如何使用read_csv、read_table等函数读取各种格式的数据文件,以及如何利用正则表达式进行数据读取。同时,还讲解了如何保存数据到CSV、HTML和Excel等格式。

Pandas IO读取文件

pandas官网IO Tools

  1. read_csv,读取带分隔符的数据,默认逗号’,’
  2. read_table,读取带分隔符的数据,默认制表符’\t’
  3. read_fwf,读取没有分隔符的数据,固定列宽(想想Excel的分列功能)
  4. read_cliboard,读取剪贴板的数据

1.文件路径

  • pd.read_csv(‘f:/test/demo.csv’),注意‘/’
  • pd.read_csv(r’f\test\demo.csv’),注意‘\’前加r
  • pd.read_table('f/:test/demo.csv, sep = ‘,’)

2.read_csv分析

# 读取不同编码格式的文件
* pd.read_csv('demo_gbk.csv',encoding = 'gbk')
* pd.read_csv('demo_utf8.csv,encoding = 'utf8')
# 不读取标题(或无标题的文件)
pd.read_csv('f:/test/demo.csv',header = None)
# 读取时自定义列标题
pd.read_csv('f:/test/demo.csv',names = ['a','b','c','d'])
# 读取时,指定特定列为索引
pd.read_csv('f:/test/demo.csv',names = ['a','b','c','d'],index_col = 'd')
# 读取时,指定多列为索引(多重索引)
pd.read_csv('f:/test/demo.csv',names = ['a','b','c','d'],index_col = ['c','d'])
# 读取指定行数(如下,10行)
pd.read_csv('f:/test/demo.csv',nrows = 10)

3.用“正则表达式”读取

pd.read_table('f:/test/demo1.csv',sep = '\s+')

保存

1. df.to_csv('测试1.csv')
2. df.to_html('测试2.html'3. df.to_excel('测试3.xlsx')

详见pandas官网IO Tools

<think>我们正在使用Pandas读取JSON文件。根据引用[1],Pandas提供了从JSON字符串读取数据的函数pd.read_json()。但注意,我们也可以直接从JSON文件中读取。 实际上,pd.read_json()可以接受多种形式的输入:字符串、路径对象(文件路径)或文件句柄。 因此,要读取一个JSON文件,我们可以使用: df = pd.read_json('文件路径.json') 但是,需要注意的是,JSON文件可能有不同的格式(如每行一个记录、嵌套的JSON等)。Pandas的read_json函数有一些参数可以处理不同的结构,例如: - orient: 指示JSON字符串的格式,可选参数如'records'、'split'、'index'等,具体取决于JSON的结构。 - lines: 如果JSON文件是每行一个JSON对象(即JSON lines格式),则设置lines=True。 例如,对于JSON lines格式(每行一个JSON对象)的文件,我们可以这样读取: df = pd.read_json('data.json', lines=True) 对于普通的JSON文件,可能不需要lines参数,但需要根据JSON的结构设置orient参数。 另外,如果JSON文件是嵌套结构,可能需要先将其展平。Pandas读取后,嵌套的JSON可能会被读成DataFrame中的字典或列表列,这时我们可以使用json_normalize函数(来自pandas.io.json)来处理嵌套结构。 但是,根据用户问题,我们只需要读取JSON文件。因此,基本的读取方法就是使用pd.read_json()并传入文件路径。 步骤: 1. 导入pandas库 2. 使用pd.read_json()函数,并指定文件路径 3. 可选:根据JSON结构设置orient、lines等参数 示例代码: import pandas as pd df = pd.read_json('example.json') 如果遇到嵌套结构,可能需要进一步处理。但用户没有提到嵌套,所以先给出基本方法。 注意:如果JSON文件很大,可能需要考虑使用chunksize参数进行分块读取,但read_json不支持chunksize。对于大文件,可以考虑使用ijson等库逐行解析,或者如果每行一个记录(JSON lines)则可以使用lines=True并配合chunksize(实际上read_json没有chunksize,但read_json支持迭代器模式?)。查阅文档:read_json函数没有chunksize参数,但我们可以使用分块读取的方法是:如果文件是JSON lines格式(每行一个JSON对象),我们可以逐块读取文件内容,然后对每块使用pd.read_json()。但这不是直接支持的。 因此,我们主要回答如何读取一般的JSON文件。 另外,引用[3]中提到了从CSV读取,但用户需要的是JSON,所以我们参考引用[1]中提到的pd.read_json()。 总结:使用pd.read_json()函数,根据文件结构设置参数。 下面给出一个示例代码:</think>### 使用Pandas读取JSON文件的方法 在Python中使用Pandas读取JSON文件非常简单,主要通过`pd.read_json()`函数实现。以下是详细步骤: #### 1. **基本读取方法** ```python import pandas as pd # 从JSON文件直接读取数据 df = pd.read_json('data.json') # 显示前5行数据 print(df.head()) ``` - ⚠️ 要求JSON文件是标准格式(如:字典列表、嵌套结构需符合Pandas解析规则) - 支持本地文件路径或URL(如`pd.read_json('https://example.com/data.json')`) #### 2. **处理不同JSON格式** 根据JSON结构可能需要指定`orient`参数: ```python # 处理行格式JSON(每行一个JSON对象) df = pd.read_json('data.json', lines=True) # 适用于JSON Lines格式 # 处理嵌套结构(orient参数指定数据结构) df = pd.read_json('nested.json', orient='records') # 其他选项:'split','index','columns' ``` #### 3. **数据类型转换** ```python # 自动转换日期列 df = pd.read_json('data.json', convert_dates=['birthday']) # 保留原始数据类型 df = pd.read_json('data.json', dtype={'user_id': str}) ``` #### 4. **从JSON字符串读取** ```python json_string = '{"name":"John", "age":30, "city":"New York"}' df = pd.read_json(json_string, orient='index').T # 转置为DataFrame ``` #### 5. **处理复杂嵌套JSON** 对于多层嵌套数据,建议先用Python解析再转换: ```python import json with open('complex.json') as f: data = json.load(f) # 展平嵌套结构 df = pd.json_normalize(data, 'users', ['group_id']) ``` > **关键参数说明**: > - `orient`:指定JSON结构(默认'infer'自动检测) > - `lines`:处理每行一个JSON对象的文件(如日志数据) > - `convert_dates`:自动转换日期字段 > - `dtype`:指定列数据类型 > - `encoding`:设置文件编码(如'utf-8') #### 常见错误处理: 1. **JSON解析错误** → 验证文件有效性(可使用[jsonlint.com](https://jsonlint.com/)) 2. **编码问题** → 添加`encoding='utf-8-sig'`参数 3. **内存不足** → 分块读取:`chunksize=1000` [^1]: Pandas支持从多种文件格式中读取数据,如CSV、Excel、SQL数据库等 [^2]: pandas入门。初始化一个dataFrame,可以read_csv从csv文件获取 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值