pandas 在巨大的 csv 的每一列中查找唯一元素的数量

pandas find number of unique elements in each column of huge csv

我有一个大约 10 GB 的巨大 csv 文件,如果我尝试加载到内存中,我会收到错误消息。

我需要计算数据框每一列的唯一元素的数量。我怎样才能做到这一点?

您可以依次加载每个列,然后调用 .nunique:

In [227]:

import io
t="""a,b,c
0,1,1
0,2,1
1,3,1
2,4,1
3,5,6"""
# get the columns first
cols = pd.read_csv(io.StringIO(t), nrows=1).columns
​
d = {}
for col in cols:
    df = pd.read_csv(io.StringIO(t), usecols=col)
    d[col] = df[col].nunique()
d
Out[227]:
{'a': 4, 'b': 5, 'c': 2}

这应该会为每列生成一个包含唯一值数量的字典

这假设您可以从 10GB 的文件中一次加载单个列