使用循环Python绘制重复值

时间:2018-11-06 14:40:36

标签: python python-3.x pandas dataframe matplotlib

我有一些看起来像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

您会看到HOUR(0-23)每个月(0-12)重复一次。我需要一种遍历值的方法,以便可以按小时(X轴)绘制每个月的 RATE (Y轴)每个名称。

我的尝试如下:

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在一个月内重复进行每次更改,所以图形在每次循环时最终返回0。我想将12个月中的每个月分别以不同的颜色显示在一张图表中的每个名称上,但是目前它们看起来像这样:

enter image description here

1 个答案:

答案 0 :(得分:1)

.pivot您的DataFrame在groupby之后,因此它将每月绘制为不同的行:

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