Построение повторяющихся значений с использованием циклов Python - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть некоторые данные, которые выглядят как data = pd.read_csv(....):

Year    Month     HOUR  NAME            RATE
2010    1          0    Big              222  
2010    1          0    Welsch Power     434
2010    1          0    Cottonwood       124
2010    1          1    Big              455  
2010    1          1    Welsch Power     900
2010    1          1    Cottonwood       110
.
.
.
2010    2          0    Big              600  
2010    2          0    Welsch Power     1000
2010    2          0    Cottonwood       170
.
.
2010    3          0    Big              400  
2010    3          0    Welsch Power     900
2010    3          0    Cottonwood       110

Как видите, ЧАС (0 - 23) повторяется каждый месяц (0 - 12). Мне нужен способ циклического перебора значений, чтобы я мог построить RATE (ось Y) каждый месяц по ЧАСУ (ось X) для каждого ИМЯ .

Моя попытка выглядит так:

for name, data in data.groupby('NAME'):
    fig = plt.figure(figsize=(14,23))
    plt.subplot(211)
    plt.plot(data['HOUR'], data['RATE'], label=name)
    plt.xlabel('Hour')
    plt.ylabel('Rate')
    plt.legend()
    plt.show()
    plt.close()

Это работает, но поскольку HOUR повторяет каждое изменение в месяце, графики возвращаются к нулю при каждом цикле. Я хочу, чтобы каждый из 12 месяцев представлял собой отдельные строки разных цветов для каждого ИМЯ на одном графике, но в настоящее время они выглядят так:

enter image description here

1 Ответ

0 голосов
/ 06 ноября 2018

.pivot ваш DataFrame после группировки, поэтому каждый месяц будет отображаться в виде отдельной строки:

import matplotlib.pyplot as plt

for name, gp in df.groupby(['NAME']):
    fig, ax = plt.subplots()
    gp.pivot(index='HOUR', columns='Month', values='RATE').plot(ax=ax, marker='o', title=name)
    plt.show()

enter image description here enter image description here enter image description here

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