Используйте для l oop, чтобы построить один и тот же период несколько раз - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть pandas фрейм данных с серией DateTime:

ndasenter image description here

И я хотел бы построить несколько вспомогательных участков с одной и той же осью X (часы 0–23), чтобы сравнить количество пользователей в разные дни. Итак, в конце у меня есть то же количество графиков, что и дней, а не только один график, охватывающий весь январь.

Я создал 2 новых столбца «День» и «Час» и попытался перебрать их как следующим образом:

for d in high['Day'].unique():
    print('Day ' + str(d))
    plt.figure()
    plt.plot(high['Hour'], high['Usuarios'])
    plt.show()

Несмотря на то, что я создаю график в день, он не работает должным образом:

enter image description here

1 Ответ

0 голосов
/ 05 февраля 2020

Главное, чего не хватает, так это ограничения часов, нанесенных на график только одним днем. Один из способов сделать это - создать новый фрейм данных, такой как: day_high = high[high['Day'] == d]. Pandas поддерживает множество других способов сделать это, например, groupby.

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

import matplotlib.pyplot as plt
import pandas as pd
import random

data = [[d, h, random.randint(0, 15)] for h in range(0, 24) for d in range(1, 32)]
high = pd.DataFrame(data, columns=['Day', 'Hour', 'Usuarios' ])
for d in high['Day'].unique():
    print('Day ' + str(d))
    day_high = high[high['Day'] == d]
    plt.plot(day_high ['Hour'], day_high ['Usuarios'])
    plt.title(f'Día {d}')
    plt.savefig(f'Día {d}.png')
    plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...