gpt4 book ai didi

python - 如何在条形图中从一列列表中绘制词频

转载 作者:行者123 更新时间:2023-12-05 04:55:20 26 4
gpt4 key购买 nike

我有数据框

1

我正在努力在所有推文、真实推文和虚假推文的条形图中显示前 10 个词。有什么建议吗?

将所有文本分成单词,计算频率,选择出现频率最高的 10 个并绘制它们。我认为这样的事情可行,但作为新手我不确定如何实现。

提前感谢您的帮助:)

最佳答案

  • 主要要求是使用 pandas.Series.explodelist 中的所有值分隔为分隔行。
  • .groupby 并聚合 .count 列中的值,然后是 .sort_values
  • 使用pandas.DataFrame.plot.bar绘制单词
import pandas as pd
import matplotlib.pyplot as plt

# test dataframe
df = pd.DataFrame({'lemmatized': [['se', 'acuerdan', 'de', 'la', 'pelicula el', 'dia'], ['milenagimon', 'miren', 'sandy', 'en', 'ny', 'tremenda'], ['se', 'acuerdan', 'de']]})

# display(df)
lemmatized
0 [se, acuerdan, de, la, pelicula el, dia]
1 [milenagimon, miren, sandy, en, ny, tremenda]
2 [se, acuerdan, de]

# use explode to expand the lists into separate rows
dfe = df.lemmatized.explode().to_frame().reset_index(drop=True)

# groupby the values in the column, get the count and sort
dfg = dfe.groupby('lemmatized').lemmatized.count() \
.reset_index(name='count') \
.sort_values(['count'], ascending=False) \
.head(10).reset_index(drop=True)

# display(dfg)
lemmatized count
0 acuerdan 2
1 de 2
2 se 2
3 dia 1
4 en 1
5 la 1
6 milenagimon 1
7 miren 1
8 ny 1
9 pelicula el 1

# plot the dataframe
dfg.plot.bar(x='lemmatized')

enter image description here

替代实现

  • 使用 .value_counts 而不是 .groupby
# use value_counts and plot the series
dfe.lemmatized.value_counts().head(10).plot.bar()
  • 使用seaborn.countplot
import seaborn as sns

# plot dfe
sns.countplot(x='lemmatized', data=dfe, order=dfe.lemmatized.value_counts().iloc[:10].index)
plt.xticks(rotation=90)

enter image description here

关于python - 如何在条形图中从一列列表中绘制词频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65443723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com