Сюжет с морским рожком - временная эволюция численности моей сущности за годы - PullRequest
0 голосов
/ 25 октября 2018

У меня есть pandas датафрейм, представляющий документы, которые содержат 3 столбца - Год, Имя, Тип.

Я пытаюсь создать гистограмму, которая будет показывать временную эволюцию моих документов за годы, и это будеттакже разделите их по типам.

Поэтому, когда у меня есть 3 года (2015, 2016, 2017) и 2 типа (хорошо, плохо), мой график будет иметь 6 столбцов (по 2 на каждый год) и высотуВ этом году в столбце будет отображаться количество документов такого типа.

Я пытался сделать это следующим образом:

data1['Name'] = 1
sns.barplot(x="Year", y="Name", hue="Type", data=data1)  

, потому что я думал, что барплот будет суммировать значения Names столбец, но он не работает таким образом.

Извините, если это глупый вопрос, я искал ответ, но не мог найти ни одного.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018
g = sns.catplot(x="Year", hue="Type", col="Name", data=data1, kind="count")

Для вашей задачи catplot () будет работать.

Используйте catplot(), чтобы объединить countplot() и FacetGrid. Это позволяет группировать по дополнительным категориальным переменным. Использование catplot() безопаснее, чем использование FacetGrid напрямую, поскольку обеспечивает синхронизацию порядка переменных по фасетам:

  • ЗдесьЯ показываю счет Names, помещая int в столбцы
  • на day (в вашем случае по годам)
  • и окраска sex (в вашем случае Type)

Пример, почему catplot() с фасетами требуется и данные должны быть соответственно изменены:

sns.catplot(x="day", hue="sex", col="time", data=data1, kind="count")

Это правильный способ построения графика с категориальными данными для лучшей визуализации.

  • Вам не нужно ставить столбец "Names" 1, потому что вы просто назначаете 1 для каждого наблюдения.(Бьюсь об заклад, имена документов там.) Таким образом, вы хотите отделить для "Good" vs "Bad" и для каждого year.

Создайте следующее:

Example showing the power of facets:

Generated using the titanic dataset modified with your code

seaborn.countplot

0 голосов
/ 25 октября 2018

Предположим, что вы хотите сосчитать каждую отдельную запись комбинации Year и Type

sns.countplot(data=data1, x="Year", hue="Type")

Предположим, вы хотите сосчитать каждую отдельную запись комбинации Year, Type и Name

filtered_data = data1.drop_duplicates(subset=["Year", "Type", "Name"])
sns.countplot(data=filtered_data, x="Year", hue="Type")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...