按两列分组绘制列柱状图

2024-05-13 07:25:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我得到的结果是: enter image description here

请给我一个方法来绘制一个直方图来分析最大降雨量发生在哪个月,按年份分组。你知道吗


Tags: 文件csv数据importmatplotlibas直方图year
3条回答

第一个不高兴的年复一月,就像你已经做的,但只保持最大降雨量。你知道吗

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

你已经接近解决方案了,我会写:使用max()而不是count()

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

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

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

或者也许

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

相关问题 更多 >