【问题标题】:How to plot Month on the x-axis and Rainfall on the y-axis with Seaborn?如何使用 Seaborn 在 x 轴上绘制月份和在 y 轴上绘制降雨量?
【发布时间】:2020-12-21 02:36:09
【问题描述】:

我有一个来自 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()

我怎样才能让 seaborn 按照我上面描述的方式绘制 rdf?谢谢!

【问题讨论】:

    标签: python data-visualization seaborn kaggle


    【解决方案1】:
    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')
    

    【讨论】:

    • sns.barplot 是我一直在寻找的,但也感谢您提供其余的代码 - 我的数字匹配,而图表正是我想要的。是否有可以分享的关于 seaborn 使用的特别好的资源/链接?再次感谢特伦顿麦金尼!
    • @raghus 很高兴这解决了您的问题。请参阅seaborn tutorialall SO questions tagged seaborn
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多