我需要绘制以下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日,依此类推)。
谢谢。
答案 0 :(得分:0)
如果我对您的理解正确,则应执行以下操作:
将Value
列转换为数字类型:
df["Value"] = pd.to_numeric(df["Value"])
按月分组,并每月汇总Value
列,最后按它们的数值排序(例如,如果您有"Months": [1, 8, 2, 2, 5, 5, 1]
):
df = df.groupby("Months", as_index=False).sum().sort_values("Months")
月份已排序,因此您可以更改其名称(从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
将索引设置为Months
(这样它就成为情节的x轴)并使用熊猫情节能力。
df.set_index("Months").plot.bar()
此操作将产生以下条形图: