Python 33gb csv文件数据集到数据帧

Python 33gb csv文件数据集到数据帧,python,pandas,csv,dataset,Python,Pandas,Csv,Dataset,我是Python和数据科学的新手 我有一个33gb的csv文件数据集,我想在一个数据框中对其进行解析,以便对其进行处理 我试着用熊猫做“随意的”。阅读csv,它需要花费很长时间来解析 我在网上搜索,找到了 它说读取大型csv文件最有效的方法是使用csv.DictReader 所以我试着这么做: import pandas as pd import csv df = pd.DataFrame(csv.DictReader(open("MyFilePath"))) 即使采用这种解决方案,完成这项

我是Python和数据科学的新手

我有一个33gb的csv文件数据集,我想在一个数据框中对其进行解析,以便对其进行处理

我试着用熊猫做“随意的”。阅读csv,它需要花费很长时间来解析

我在网上搜索,找到了

它说读取大型csv文件最有效的方法是使用
csv.DictReader

所以我试着这么做:

import pandas as pd
import csv

df = pd.DataFrame(csv.DictReader(open("MyFilePath")))
即使采用这种解决方案,完成这项工作也要花费很多时间


你们能告诉我把一个大数据集解析成熊猫最有效的方法是什么吗?

你们不可能在短时间内读取这么大的文件。无论如何,有一些策略可以处理大量数据,这些策略可以让您有机会在不离开Pandas的情况下实现代码:

Sampling
Chunking
Optimising Pandas dtypes
Parallelising Pandas with Dask.
最简单的选项是对数据集进行采样(这可能对您有所帮助)。有时,大型数据集的随机部分已经包含足够的信息来进行下一步计算。如果您实际上不需要处理整个数据集,那么这是一种非常好的技术。 示例代码:

import pandas
import random

filename = "data.csv" 
n = sum(1 for line in open(filename)) - 1 # number of lines in file
s = n//m  # part of the data
skip = sorted(random.sample(range(1, n + 1), n - s))
df = pandas.read_csv(filename, skiprows=skip)

这是用于对大数据进行分块。

33gb是一个真正庞大的文本文件,因此不可避免地需要花费很长时间。您的机器是否有足够的内存来处理生成的数据帧?您看到了吗?正如@thierrylahuille所说的,您可以读取它并分块处理。但是,这仍然需要很长时间。它只会处理可能的内存限制数据量很大,无论你做什么都需要时间。你能一次把所有的数据放入内存吗?如果没有,你就别无选择,只能分块操作它。@Thierrylahuille我会按照你的建议去做,扔掉数据