计算大熊猫事件的最有效方法是什么?

时间:2013-11-19 15:58:34

标签: python pandas

我有一个大的(大约12M行)数据帧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:如果答案很明显,你觉得有必要惩罚我提出这个问题,请同时提供答案。谢谢。

4 个答案:

答案 0 :(得分:152)

我认为df['word'].value_counts()应该服务。通过跳过groupby机器,你将节省一些时间。我不确定为什么count应该比max慢得多。两者都需要一些时间来避免缺失值。 (与size比较。)

在任何情况下,value_counts都是specifically optimized来处理对象类型,就像你的单词一样,所以我怀疑你会做得比这更好。

答案 1 :(得分:11)

如果要计算pandas dataFrame中列中分类数据的频率,请使用:df['Column_Name'].value_counts()

- Source

答案 2 :(得分:3)

只是先前答案的补充。别忘了,当处理真实数据时,可能会有空值,因此使用选项dropna=Falsedefault is True

将那些也包括在计数中非常有用。

一个例子:

>>> df['Embarked'].value_counts(dropna=False)
S      644
C      168
Q       77
NaN      2

答案 3 :(得分:0)

我来到这里只是想寻找df.column中是否存在“值”,这对我有用:

return redirect(url_for('submitForm'))