我有一个大的(大约12M行)数据帧df说:
df.columns = ['word','documents','frequency']
Run Code Online (Sandbox Code Playgroud)
所以以下内容及时进行:
word_grouping = df[['word','frequency']].groupby('word')
MaxFrequency_perWord = word_grouping[['frequency']].max().reset_index()
MaxFrequency_perWord.columns = ['word','MaxFrequency']
Run Code Online (Sandbox Code Playgroud)
但是,这需要很长时间才能运行:
Occurrences_of_Words = word_grouping[['word']].count().reset_index()
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?有没有更好的方法来计算大型数据框中的出现次数?
df.word.describe()
Run Code Online (Sandbox Code Playgroud)
运行得很好,所以我真的没想到这个Occurrences_of_Words数据帧需要很长时间才能构建.
ps:如果答案很明显,你觉得有必要惩罚我提出这个问题,请同时提供答案.谢谢.
Dan*_*lan 191
我认为df['word'].value_counts()
应该服务.通过跳过groupby机器,你将节省一些时间.我不确定为什么count
要慢得多max
.两者都需要一些时间来避免缺失值.(比较size
.)
在任何情况下,value_counts都经过专门优化处理对象类型,就像你的单词一样,所以我怀疑你会做得更好.
只是先前答案的补充。别忘了,在处理实际数据时,可能会有null值,因此使用选项将默认值包括在内也很有用dropna=False
(默认值为True
)
一个例子:
>>> df['Embarked'].value_counts(dropna=False)
S 644
C 168
Q 77
NaN 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
150088 次 |
最近记录: |