Построение нескольких линий на одном графике с указанием времени в месяцах по оси X, количества вхождений по оси Y - PullRequest
2 голосов
/ 19 апреля 2019

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

Я создал фрейм данных с 2 столбцами (помимо индекса), а именно 'Date' и 'Genre'. Типы данных datetime64[ns] и 'Genre' - object.

Чтобы визуализировать это:

Date           Genre
2018-01-01     romance
2018-01-01     fiction
2018-01-01     romance
2018-01-02     drama
2018-01-02     romance
2018-01-02     fiction    
2018-01-02     romance
2018-01-03     romance
2018-01-03     drama

Этот список можно продолжить (весь 2018 год), и он показывает, что на основе набора данных по 2018-01-01 были просмотрены три фильма в жанре Genre, художественная литература и романтика.

Вопрос:

Я хочу построить многострочный график, в котором каждая строка представляет отдельный жанр. На оси X время будет отображаться в месяцах, а на оси Y - количество часов. То, что я пытаюсь сделать, это построить каждый жанр на одном графике и показать количество часов этого жанра в день, где ось X помечена в месяцах.

Что я пробовал до сих пор:

Сортировка кадра данных фильма по жанрам и сохранение его в новой переменной:

df_2018_rom = df_movies_2018[df_movies_2018.Genre == 'romance']
.groupby(['Genre', 'Date']).Date.count()

Но я все еще не могу нарисовать график, который хочу.

Заранее спасибо за любую помощь!

1 Ответ

2 голосов
/ 19 апреля 2019

Вы можете сделать это просто, изменив форму DataFrame с pandas.crosstab:

Пример

# if needed - make sure 'Date' is correct dtype
df_movies_2018['Date'] = pd.to_datetime(df['Date'])

# Filter to genres you're interested in
genres_to_plot = ['romance', 'drama', 'fiction']
df = df_movies_2018[df_movies_2018.Genre.isin(genres_to_plot)]

df_cross = pd.crosstab(df.Date, df.Genre)
df_cross.plot()

enter image description here

Для справки, df_cross выглядит так:

Genre       drama  fiction  romance
Date                               
2018-01-01      0        1        2
2018-01-02      1        1        2
2018-01-03      1        0        1

Pandas DataFrame.plot метод будет обрабатывать каждый столбец в DataFrame как отдельный ряд (строку) с index значениями по оси x по умолчанию.

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