熊猫在巨大的csv的每一列中找到独特元素的数量
Posted
技术标签:
【中文标题】熊猫在巨大的csv的每一列中找到独特元素的数量【英文标题】:pandas find number of unique elements in each column of huge csv 【发布时间】:2015-04-17 13:57:04 【问题描述】:我有一个大约 10 GB 的巨大 csv 文件,如果我尝试加载到内存中会出现错误。
我需要计算数据框每一列的唯一元素数。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:您可以依次加载每个列,然后调用.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 文件中加载一列
【讨论】:
我试图这样做,但加载每一列的时间很长,我有 2000 列 :( 嗯,你可以一次通过 100 列或其他东西 我知道可以分块读取数据帧。我想知道是否可以在仅部分读入内存的数据帧上使用apply_along_axis
你可以使用分块,但它会更复杂,因为我猜你必须为每一列使用一个计数器,为每个块使用+=
。我认为一次阅读 100 列应该不会太糟糕,但我没有你的数据
你做不到df.nunique()
!!以上是关于熊猫在巨大的csv的每一列中找到独特元素的数量的主要内容,如果未能解决你的问题,请参考以下文章