Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过将列中的两列分组来绘制列的柱状图_Python_Pandas_Numpy_Matplotlib - Fatal编程技术网

Python 通过将列中的两列分组来绘制列的柱状图

Python 通过将列中的两列分组来绘制列的柱状图,python,pandas,numpy,matplotlib,Python,Pandas,Numpy,Matplotlib,我不熟悉熊猫和猫。我有一个csv文件,由2012年到2018年的年份组成。我有一年中每个月的降雨数据。我想通过柱状图分析,一年中哪个月降雨量最大。这是我的数据集 year month Temp Rain 2012 1 10 100 2012 2 20 200 2012 3 30 300 .. .. .. .. 2012 12 40 400 2013 1 50 300 2

我不熟悉熊猫和猫。我有一个csv文件,由2012年到2018年的年份组成。我有一年中每个月的降雨数据。我想通过柱状图分析,一年中哪个月降雨量最大。这是我的数据集

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))
下面是我得到的输出:


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

如果您已接近解决方案,我将写下:使用max()而不是count()


您已接近解决方案,我将写下:使用max()而不是count()


可能您不想看到每组的
计数,但是

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

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

可能您不想看到每组的
计数,但是

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

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

第一年和第二个月,就像你已经做的那样,但只保持最大降雨量

series_df2 = df2.groupby(['year','month'], sort=False)['Rain'].max()
然后解开序列,转置并绘制它

series_df2.unstack().T.plot(kind='bar', subplots=False, layout=(2,2))
这将为您的示例数据提供如下输出:


第一个不高兴的年头和月份,就像你已经做的那样,但只保持最大降雨量

series_df2 = df2.groupby(['year','month'], sort=False)['Rain'].max()
然后解开序列,转置并绘制它

series_df2.unstack().T.plot(kind='bar', subplots=False, layout=(2,2))
这将为您的示例数据提供如下输出:


请不要将图像用于数据。复制并粘贴您的样本数据,以便我们可以复制。@Chris,谢谢您的建议。我已更新。请不要将图像用于数据。复制并粘贴您的样本数据,以便我们可以复制。@Chris,谢谢您的建议。另一个选项:
fig,ax=plt.subplot(figsize=(8,6));df.groupby(['year','month']).sum()['Rain'].unstack().plot(kind='bar',ax=ax)
取决于图形的外观。另一个选项:
fig,ax=plt.subplot(figsize=(8,6));df.groupby(['year','month']).sum()['Rain'].unstack().plot(kind='bar',ax=ax)
,具体取决于您希望图形的外观。