[英]How to plot Month on the x-axis and Rainfall on the y-axis with Seaborn?
我有一個來自 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 軸上顯示月的 plot,在 Y 軸上顯示總降雨量。 所以我首先做了一個
rdf = rain_data_by_month.groupby(['Month'])['Rainfall'].sum().reset_index()
我怎樣才能按照上面描述的方式獲得 seaborn 到 plot rdf? 謝謝!
seaborn.barplot
。pandas.Categorical
對月份列進行排序,並使用calendar
模塊獲取月份的排序list
,或手動創建list
。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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.