pandas.read_csv分块读取大文件

当面临大文件无法一次性加载到内存时,可以利用pandas的read_csv函数配合chunkSize参数进行分块读取。通过设置chunkSize或iterator=True,返回可迭代的TextFileReader对象,实现大文件的逐块处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,下载了一个csv结构的数据集,有1.2G。对该文件试图用pd.read_csv进行读取的时候,发现出现内存不足的情况

,电脑内存不足,不能一次性的读取。此时我们就需要对csv文件进行分块读取。

在对数据进行分块读取之前,我们需要对pd.read_csv()中的参数进行一定的了解,pandas.read_csv()官方文档。如果英文看不懂的可以去网上找一下别人翻译出来的。 

在官方文档中,read_csv()函数有一个chunkSize参数,通过指定一个chunk Size分块大小来读取文件,返回的是一个可迭代的对象Text FileReader

当我们指定read_csv()中的iterator参数为True时,也可以返回一个可以迭代的对象TextFileReader。

 

  

### pandas `read_csv` 方法使用教程 #### 1. 基本功能介绍 Pandas 提供了一个强大的工具 `read_csv()` 来处理 CSV 文件。该方法可以用于本地文件以及远程 URL 数据源的读取操作。 以下是几个常见的场景及其实现方式: --- #### 2. 读取文件最后 N 行数据并保留表头 如果需要读取文件中的最后几行数据,可以通过设置参数 `skiprows` 和计算总行数的方式完成此目标。具体代码如下所示: ```python import pandas as pd n = 5 # 需要获取的最后五行数据 df = pd.read_csv("example.csv", skiprows=lambda x: x < (pd.read_csv("example.csv").shape[0] - n)) print(df.head()) ``` 上述代码通过动态跳过前 `(total_rows - n)` 行实现了只加载最后 N 行的功能[^1]。 --- #### 3. 从网络 URL 中读取 CSV 数据 当数据存储在网络上的某个位置时,可以直接传递 URL 给 `read_csv()` 函数作为输入路径。例如: ```python url = 'https://raw.githubusercontent.com/user/repo/data/sample.csv' df_url = pd.read_csv(url) print(df_url.head()) ``` 这种方式适用于公开访问的数据集或者经过身份验证后的私有资源链接。 --- #### 4. 处理含有错误记录的 CSV 文件 有时遇到一些不符合标准格式的行会引发解析失败的情况,在这种情况下可以利用 `error_bad_lines=False` 参数忽略这些有问题的内容继续执行后续流程。 ```python df_error_handling = pd.read_csv("data_with_errors.csv", on_bad_line='skip') # 注意:在较新的版本中已改为on_bad_line代替error_bad_lines print(df_error_handling) ``` 这里展示了如何优雅地避开那些无法正常解读的部分而不中断整个程序运行过程[^3]。 --- #### 5. 支持多种压缩类型的文件读入 除了普通的 `.csv` 格式的文档外,还可以轻松应对诸如 ZIP 或 GZipped 形态下的同类型资料包。只需简单指定额外的关键字即可自动解压后再导入内存之中。 ```python compressed_df = pd.read_csv('archive.zip', compression='zip') gzipped_df = pd.read_csv('file.gz', compression='gzip') ``` 这表明即使面对被封装起来的大批量原始素材也无需担心兼容性问题存在[^2]。 --- #### 6. 对超大规模数据实施分块读取策略 针对特别庞大的表格结构而言,则推荐采用迭代器模式逐步提取所需片段从而减少一次性占用过多系统资源的风险。 ```python chunksize = 10 ** 6 chunks = [] for chunk in pd.read_csv('large_file.csv', chunksize=chunksize): chunks.append(chunk) final_dataframe = pd.concat(chunks, axis=0) del chunks # 清除不再使用的中间变量释放空间 ``` 这种方法非常适合用来分析海量级别的业务日志或者其他形式的历史积累型档案材料[^4]。 --- ### 总结 以上就是关于 Pandas 库下核心组件之一 —— `read_csv()` 的详细介绍及相关技巧分享。无论是基础应用还是高级定制化需求都能得到满足!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值