通过在熊猫中分组两个列来绘制列的直方图

时间:2019-03-08 14:33:35

标签: python pandas numpy matplotlib

我是熊猫和matplotlib的新手。我有一个包含2012年至2018年的csv文件。对于一年中的每个月,我都有Rain数据。我想通过直方图来分析一年中哪个月份的降雨量最大。这是我的数据集。

year    month  Temp Rain
2012    1       10  100
2012    2       20  200
2012    3       30  300
..      ..      ..  ..
2012    12      40  400
2013    1       50  300
2013    2       60  200
..      ..      ..  ..
2018    12      70  400

我无法使用直方图进行绘制,我尝试使用条形图进行绘制,但未获得理想的结果。这是我尝试过的:

import pandas as pd
import numpy as npy
import matplotlib.pyplot as plt
df2=pd.read_csv('Monthly.csv')
df2.groupby(['year','month'])['Rain'].count().plot(kind="bar",figsize=(20,10))

这是我得到的输出: enter image description here

请向我建议一种绘制直方图的方法,以分析按年份分组在哪个月份发生的最大降雨量。

3 个答案:

答案 0 :(得分:1)

您不了解解决方案,我会写:使用max()而不是count()

df2.groupby(['year','month'])['Rain'].max().plot(kind="bar",figsize=(20,10))

答案 1 :(得分:1)

您可能不想看到每个组的count,但

df2.groupby(['year','month'])['Rain'].first().plot(kind="bar",figsize=(20,10))

或者也许

df2.groupby(['month'])['Rain'].sum().plot(kind="bar",figsize=(20,10))

答案 2 :(得分:0)

您已经经历了头一个多雨的年月,但仅保持最大降雨。

series_df2 = df2.groupby(['year','month'], sort=False)['Rain'].max()

然后拆开序列,将其转置并绘制。

series_df2.unstack().T.plot(kind='bar', subplots=False, layout=(2,2))

这将为您的示例数据提供如下所示的输出:

enter image description here