问题:计算大熊猫数量的最有效方法是什么?
我有一个大的(约1200万行)数据帧df,说:
df.columns = ['word','documents','frequency']
因此,以下及时运行:
word_grouping = df[['word','frequency']].groupby('word')
MaxFrequency_perWord = word_grouping[['frequency']].max().reset_index()
MaxFrequency_perWord.columns = ['word','MaxFrequency']
但是,这要花费很长的时间才能运行:
Occurrences_of_Words = word_grouping[['word']].count().reset_index()
我在这里做错了什么?有没有更好的方法来计算大型数据框中的出现次数?
df.word.describe()
运行良好,所以我真的没想到这个Occurrences_of_Words数据框会花费很长时间。
ps:如果答案很明显,并且您觉得有必要因提出这个问题而对我不利,请同时提供答案。谢谢。
回答 0
我认为df['word'].value_counts()
应该服务。通过跳过groupby机制,您可以节省一些时间。我不知道为什么count
要慢于max
。两者都需要一些时间来避免丢失值。(与相比size
。)
无论如何,对value_counts进行了专门优化以处理像您的单词这样的对象类型,因此我怀疑您会做得更好。
回答 1
当您想统计pandas dataFrame中一列中分类数据的频率时,请使用: df['Column_Name'].value_counts()
– 来源。
回答 2
只是先前答案的补充。别忘了,在处理实际数据时,可能会有空值,因此使用选项将默认值包括在内也很有用dropna=False
(默认值为True
)
一个例子:
>>> df['Embarked'].value_counts(dropna=False)
S 644
C 168
Q 77
NaN 2