小样月相对于其累积值

时间:2019-03-09 14:33:41

标签: python pandas

我需要绘制以下DataFrame的条形图:

df = pd.DataFrame(
    {
        "Months": [1, 2, 2, 4],
        "Value": ["1000", "2000", "1500", "3200"],
    }
)

目标是制作条形图,其中在Months上带有x-axis,在Value上具有y-axis列中的组合值(因此在这种情况下,这意味着仅合并第2个月,实质上合并月数相同的行)。

我还需要将数字月份转换为对应的文本月份(以使1变为January等),并在x轴上将其按正确的顺序排列(因此,一月将是第一个, 2月2日,依此类推)。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果我对您的理解正确,则应执行以下操作:

  1. Value列转换为数字类型:

    df["Value"] = pd.to_numeric(df["Value"])
    
  2. 按月分组,并每月汇总Value列,最后按它们的数值排序(例如,如果您有"Months": [1, 8, 2, 2, 5, 5, 1]):

    df = df.groupby("Months", as_index=False).sum().sort_values("Months")
    
  3. 月份已排序,因此您可以更改其名称(从int更改为str形式):

    df["Months"] = pd.to_datetime(df["Months"], format="%m").dt.month_name()
    

    此操作将产生以下pd.DataFrame

         Months  Value
    0   January   1000
    1  February   3500
    2     April   3200
    
  4. 将索引设置为Months(这样它就成为情节的x轴)并使用熊猫情节能力。

    df.set_index("Months").plot.bar()
    

此操作将产生以下条形图:

enter image description here