通过将 Pandas 中的两列分组来绘制列的直方图

我是熊猫和 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

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))

这是我得到的输出:

http://img2.mukewang.com/61a5de5c0001683012140358.jpg

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


一只萌萌小番薯
浏览 208回答 3
3回答

米琪卡哇伊

可能您不想看到count每个组,但是df2.groupby(['year','month'])['Rain'].first().plot(kind="bar",figsize=(20,10))或者可能df2.groupby(['month'])['Rain'].sum().plot(kind="bar",figsize=(20,10))

函数式编程

您已接近解决方案,我会写:使用 max() 而不是 count()df2.groupby(['year','month'])['Rain'].max().plot(kind="bar",figsize=(20,10))

喵喵时光机

第一个 groubby 年和月,就像你已经做的那样,但只保持最大降雨量。series_df2 = df2.groupby(['year','month'], sort=False)['Rain'].max()然后拆开系列,转置它并绘制它。series_df2.unstack().T.plot(kind='bar', subplots=False, layout=(2,2))这将为您的示例数据提供如下所示的输出:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python