как построить столбец массивов, где мне нужно подсчитать, сколько раз разные значения появляются во всех этих массивах - PullRequest
0 голосов
/ 09 июля 2020

Я работаю с базой данных шоу и хочу изобразить на гистограмме, сколько раз каждый жанр используется во всех шоу, чтобы я мог показать самые популярные жанры. У меня проблема в том, что шоу (шоу - это строка в базе данных) обычно имеет более 1 жанра (например: ['Comedy', 'Drama','Sci-Fi'] может быть жанром 1 шоу). Я хотел бы отображать жанры отдельно (я использую jupyter с pandas, matplotlib, ...). Вот код, который я сделал до сих пор:

bar_data = content2['genre'].value_counts().sort_values().tail(20)
bar_plot = bar_data.plot.barh(figsize=(20, 12))
bar_plot.set_title("genre poplularity")
bar_plot.set_xlabel("amount of times genre is used")
bar_plot.set_ylabel("genres")
plt.show()

Некоторые способы, которые я пытался решить, пытаясь разделить на ',', но это не работает (вероятно, потому что это не так строка). Так может ли кто-нибудь помочь мне понять, как построить столбец таких массивов.

конечный результат должен быть примерно таким, но затем в виде гистограммы

Comedy: 800
Adventure: 756
Sci-Fi: 698
Kids: 630

Большое спасибо за время и помощь

1 Ответ

0 голосов
/ 09 июля 2020

Если у вас есть каждый жанр в виде списка, вы можете использовать explode(), чтобы получить из него отдельные строки. Затем используйте value_counts().

content2['genre'].explode().value_counts()

Надеюсь, это поможет.

Обновить

Похоже, каждая строка представляет собой строку. Таким образом, вам сначала нужно удалить (strip('[]')) '[]', а затем разделить строку запятыми (split(',')), чтобы получить названия жанров. Это можно сделать с помощью следующего фрагмента кода.

content2['genre'].str.strip('[]').str.split(',')

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...