Как отображать частоту слов из столбца списков в гистограмме

у меня есть фрейм данных

Как отображать частоту слов из столбца списков в гистограмме

Я изо всех сил пытаюсь показать 10 лучших слов в гистограмме для всех твитов, настоящих твитов и подделок. Какие-либо предложения?

Разделите все тексты на слова, посчитайте частоты, выберите 10 наиболее часто встречающихся и начертите их. Я думал, что что-то подобное может работать, но как новичок я не знаю, как это реализовать.

Спасибо за помощь заранее :)

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
0
3 383
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  • Основное требование — использовать pandas.Series.explode для разделения всех значений в list на отдельные строки.
  • .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')

Альтернативные реализации

  • Используйте .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)

Другие вопросы по теме