如何解决如何使用Seaborn在X轴上绘制月份,在Y轴上绘制降雨?
我有一个数据集,来自Kaggle:https://www.kaggle.com/ravisane1/monthly-rainfall-data-india-of-a-century。我使用了melt通过执行
将月份从列转换为行rain_data_by_month = rain_data.melt(id_vars=["State","District","Year"],var_name="Month",value_name="Rainfall")
现在,我想在X轴上绘制月份,在Y轴上绘制总降雨量。所以我首先做了一个
rdf = rain_data_by_month.groupby(['Month'])['Rainfall'].sum().reset_index()
我如何才能像上面描述的那样绘制rdf?谢谢!
解决方法
- 使用
seaborn.barplot
。 - kaggle: india_monthly_rainfall_data.csv
- 除非指定订单,否则API不知道如何订购月份。
- 使用
pandas.Categorical
对Month列进行排序,并使用calendar
模块来获得list
个月的订购,或手动创建list
。
- 使用
- 请参见Weather Visualization for Portland,OR: 1940 - 2020
- 请参阅Plot Daily Max & Min Temp-也可用于降雨。
import pandas as pd
import seaborn as sns
import calendar
# load data
df = pd.read_csv('data/india_monthly_rainfall_data.csv')
# melt
dfm = df.melt(id_vars=["State","District","Year"],var_name="Month",value_name="Rainfall")
# groupby sum
rdf = dfm.groupby(['Month'])['Rainfall'].sum().reset_index()
# ordered
rdf.Month = pd.Categorical(rdf.Month,categories=list(calendar.month_abbr)[1:],ordered=True)
# display(rdf)
Month Rainfall
Apr 2.15743e+06
Aug 1.52092e+07
Dec 6.44887e+05
Feb 9.17824e+05
Jan 7.38981e+05
Jul 1.65285e+07
Jun 1.02515e+07
Mar 1.17930e+06
May 4.09921e+06
Nov 1.56662e+06
Oct 4.33708e+06
Sep 1.00620e+07
# plot
p = sns.barplot('Month','Rainfall',data=rdf)
p.set_ylabel('Rainfall (mm)')
p.set_title(f'1901 - 2002: Total Cumulative Monthly Rainfall')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。