📅  最后修改于: 2023-12-03 15:22:41.618000             🧑  作者: Mango
在数据分析、文本处理等领域,常常需要统计一些文本中出现单词、字符、词组等的频率。Python 提供了内置函数和第三方库,可以方便地实现这个功能,本文将介绍如何使用 Python 创建频率表。
Python 内置的 collections 模块 提供了一些高效的容器类型,其中包括了用于统计频率的 Counter 类。
from collections import Counter
words = ['apple', 'banana', 'cherry', 'apple', 'cherry', 'cherry']
counter = Counter(words)
print(counter)
# Counter({'cherry': 3, 'apple': 2, 'banana': 1})
上述代码中,我们创建了一个包含字符串的列表,使用 Counter 对象统计了每个字符串出现的次数,并打印出来。Counter 对象支持多种常用的操作,例如:most_common(n) 可以返回出现频率前 n 高的元素。
print(counter.most_common(2))
# [('cherry', 3), ('apple', 2)]
pandas 是一款强大的数据处理库,可以实现各种数据的处理和分析任务。其中,pandas.Series 对象提供了 value_counts() 方法,可以方便地统计频率。
import pandas as pd
words = ['apple', 'banana', 'cherry', 'apple', 'cherry', 'cherry']
s = pd.Series(words)
counts = s.value_counts()
print(counts)
# cherry 3
# apple 2
# banana 1
# dtype: int64
上述代码中,我们将列表转换为 Series 对象,使用 value_counts() 方法统计每个字符串出现的次数,并打印出来。
numpy 是一款专门处理数值计算的库,其中的 numpy.unique 函数可以方便地统计每个元素在数组中出现的次数。
import numpy as np
words = ['apple', 'banana', 'cherry', 'apple', 'cherry', 'cherry']
unique, counts = np.unique(words, return_counts=True)
print(dict(zip(unique, counts)))
# {'apple': 2, 'banana': 1, 'cherry': 3}
上述代码中,我们将列表传入 numpy.unique 函数,并将返回的结果用 dict 函数转换为字典形式,打印出来。
本文介绍了三种方法来创建频率表:collections 模块的 Counter 类,pandas 库的 Series 对象,以及 numpy 库的 numpy.unique 函数。这些方法各有优劣,可根据实际需求选择使用。