pandas分批读取大数据集教程

  • Post category:Python

1. 准备工作

首先,需要安装pandas库,可以通过以下命令进行安装:

pip install pandas

如果数据集需要从远程服务器上下载,可以使用urllib库进行下载:

import urllib.request

url = "http://example.com/mydata.csv"
filename = "mydata.csv"

urllib.request.urlretrieve(url, filename)

2. 分批读取数据

由于大数据集在一次性读取时可能会占用大量内存,而且可能会导致程序崩溃,所以需要分批读取数据。pandas库提供了read_csv()函数,可以通过设置chunksize参数来控制每次读取的行数,并返回一个可迭代的对象。示例代码如下:

import pandas as pd

chunk_size = 1000  # 每批读取的行数
filename = "mydata.csv"

for chunk in pd.read_csv(filename, chunksize=chunk_size):
    # 对每批数据进行处理
    print(chunk.head())

这个例子中,我们读取mydata.csv文件中的数据,并将每批数据的大小设置为1000行。我们使用一个for循环遍历数据集,对每一批数据进行处理。在这个例子中,我们只是简单的打印出每批数据的前5行。

注意,每批数据都是一个DataFrame对象,可以进行通用的DataFrame操作,例如筛选、排序等操作。

3. 设置指定列

有时候我们只需要分析数据集中的一部分列,而不是全部列,可以通过设置参数usecols来指定要读取的列。示例代码如下:

import pandas as pd

chunk_size = 1000  # 每批读取的行数
filename = "mydata.csv"
cols = ["id", "name", "age"]  # 要读取的列名

for chunk in pd.read_csv(filename, chunksize=chunk_size, usecols=cols):
    # 对每批数据进行处理
    print(chunk.head())

这个例子中,我们读取mydata.csv文件中的数据,每次读取1000行,仅读取列”id”、”name”和”age”。我们使用一个for循环遍历数据集,对每一批数据进行处理。在这个例子中,我们只是简单的打印出每批数据的前5行。

注意,虽然我们只读取了指定的列,但每批数据仍然是一个完整的DataFrame对象,可以进行通用的DataFrame操作。