Python创建数据帧的多条形图

2024-10-03 00:30:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个datafarme,希望创建多个条形图

基本上,我在运行代码后创建了下表:

company = df.groupby('country').status.value_counts()
company
country       status   
DNK           operating    186
              acquired      13
              closed        10
FIN           operating    171
              acquired      11
              closed         8
ISL           operating     14
              closed         2
NOR           operating     85
              acquired       6
              closed         6
SWE           operating    277
              closed        18
              acquired      12

我尝试创建多个条形图,每个国家将3个状态值分组。每个状态代表一种条形颜色(操作=蓝色,获取=绿色,关闭=红色)。然而,我得到的要么是错误,要么它们都有一种颜色。图表应与下面的图像示例相同:

image sample for multiple bars chart

我是新来的,希望你能帮我


Tags: 代码dfvalue颜色statusoperatingcountrycompany
2条回答

您可以使用seaborn:

import seaborn as sns
sns.set()

sns.catplot(x="country", y="value", hue="status", kind="bar", data=company)

这里,value将是数字列的列名。您可能需要首先填写country列,以便您的数据框如下所示:

country       status       value
DNK           operating    186
DNK           acquired      13
DNK           closed        10
FIN           operating    171
FIN           acquired      11
FIN           closed         8
ISL           operating     14
ISL           closed         2
NOR           operating     85
NOR           acquired       6
NOR           closed         6
SWE           operating    277
SWE           closed        18
SWE           acquired      12

那么它应该会起作用:

barplot

基于@Arne final output,基本上我需要为status.value_counts()的输出分配value,通过向代码中添加reset_index(name='value')来获得我的图表,而不会出现任何错误

company = df.groupby('country').status.value_counts().reset_index(name='value')

company
    country    status       counts
0   DNK        operating    186
1   DNK        acquired     13
2   DNK        closed       10
3   FIN        operating    171
4   FIN        acquired     11
5   FIN        closed       8
6   ISL        operating    14
7   ISL        closed       2
8   NOR        operating    85
9   NOR        acquired     6
10  NOR        closed       6
11  SWE        operating    277
12  SWE        closed       18
13  SWE        acquired     12

然后我继续使用@Arne建议的代码:

import seaborn as sns
sns.set()

sns.catplot(x="country", y="value", hue="status", kind="bar", data=company)

输出结果与@Arne的图表相同

谢谢@Arne

相关问题 更多 >