如何在 Pandas 数据帧 (Python) 的语料库中找到最常见的单词
How to find most frequnet words in a corpus in Pandas dataframe (Python)
我有 Pandas 数据框,看起来像 following.I 已经标记了我的文本文件并使用 NLTK
Countvectorizer
转换为 pandas
数据框。此外,我已经从我的 coupus 中删除了停用词和标点符号。我试图在 pandas
数据框中找到我语料库中最常用的词。在下面的数据框中,"aaron" 和 "abandon" 等词出现了 >10 次,因此这些词应该在新的数据框中。
注意:我是 python 的新手,我不确定如何实现它。用代码提供解释。
数据帧的子集
我已经清理了我的语料库,我的 dataframe
如下所示
{'aaaahhhs': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 1}, 'aahs': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 1}, 'aamir': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 1}, 'aardman': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 2}, 'aaron': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 4, 997: 0, 998: 0, 999: 0, 1000: 14}, 'abandon': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 16}}
如果需要前N个词:
N = 2
print (df.sum().nlargest(N).index)
Index(['aaron', 'abandon'], dtype='object')
另一个解决方案:
print (df.sum().sort_values(ascending=False).index[:N])
Index(['aaron', 'abandon'], dtype='object')
如果需要也算在一栏DataFrame
或Series
(去掉to_frame
):
N = 2
print (df.sum().nlargest(N).to_frame('count'))
count
aaron 18
abandon 16
print (df.sum().sort_values(ascending=False).iloc[:N].to_frame('count'))
count
aaron 18
abandon 16
如果需要2列DataFrame
:
print (df.sum().nlargest(N).rename_axis('word').reset_index(name='count'))
word count
0 aaron 18
1 abandon 16
print (df.sum()
.sort_values(ascending=False).iloc[:N]
.rename_axis('word')
.reset_index(name='count'))
word count
0 aaron 18
1 abandon 16
尝试:
dftop2 = pd.DataFrame(df.sum().sort_values(ascending=False).head(2))
你得到:
0
aaron 18
abandon 16
我有 Pandas 数据框,看起来像 following.I 已经标记了我的文本文件并使用 NLTK
Countvectorizer
转换为 pandas
数据框。此外,我已经从我的 coupus 中删除了停用词和标点符号。我试图在 pandas
数据框中找到我语料库中最常用的词。在下面的数据框中,"aaron" 和 "abandon" 等词出现了 >10 次,因此这些词应该在新的数据框中。
注意:我是 python 的新手,我不确定如何实现它。用代码提供解释。
数据帧的子集
我已经清理了我的语料库,我的 dataframe
如下所示
{'aaaahhhs': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 1}, 'aahs': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 1}, 'aamir': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 1}, 'aardman': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 2}, 'aaron': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 4, 997: 0, 998: 0, 999: 0, 1000: 14}, 'abandon': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 16}}
如果需要前N个词:
N = 2
print (df.sum().nlargest(N).index)
Index(['aaron', 'abandon'], dtype='object')
另一个解决方案:
print (df.sum().sort_values(ascending=False).index[:N])
Index(['aaron', 'abandon'], dtype='object')
如果需要也算在一栏DataFrame
或Series
(去掉to_frame
):
N = 2
print (df.sum().nlargest(N).to_frame('count'))
count
aaron 18
abandon 16
print (df.sum().sort_values(ascending=False).iloc[:N].to_frame('count'))
count
aaron 18
abandon 16
如果需要2列DataFrame
:
print (df.sum().nlargest(N).rename_axis('word').reset_index(name='count'))
word count
0 aaron 18
1 abandon 16
print (df.sum()
.sort_values(ascending=False).iloc[:N]
.rename_axis('word')
.reset_index(name='count'))
word count
0 aaron 18
1 abandon 16
尝试:
dftop2 = pd.DataFrame(df.sum().sort_values(ascending=False).head(2))
你得到:
0
aaron 18
abandon 16