matplotlib 如何在PYthon中绘制一个条形图来描述分类变量的每个标签的观察值的数量?

6l7fqoea  于 2023-01-09  发布在  Python
关注(0)|答案(1)|浏览(92)

我知道这是非常简单的,但我不知道如何做到这一点,因为我不经常绘图,这让我头疼。我有两个特别的问题:
1 º假设我有一个 Dataframe (或者说数组)的一列,其中包含一个分类(对象)变量,我想制作一个条形图,其中包含的观察值的数量与条形图的标签不同,例如,如果我有一个 Dataframe ,其中的列名为color,我想制作这样的条形图。

COLOR
0   green
1   red
2   green
3   yellow
4   pink
5   red
6   blue

First Question
第二个问题是我有一个数据集,它有很多行和一些标签,我对其中的两个感兴趣。我想画一个条形图(以下面所示的两种方式中的任何一种),它将满足属于第一个标签的特定类的行数除以第二个标签的类。例如,如果在组A中有' s 160行,其中每40如果也为系列1,我希望它绘制如下。

Group  Series
0   Group A Series 2    
1   Group B Series 1    
2   Group B Series 5    
3   Group A Series 4    
0   Group A Series 1    
1   Group B Series 3    
2   Group B Series 3    
3   Group A Series 2

Second Question
我还想知道,是否有任何函数,在给定两个标号的情况下,告诉我第二列中每个标号的百分比,属于第一列中的任何一个,就像第二个问题一样,但我希望它是数字化的,输出如下

Group A : 23% Series 1, 15% Series 2, 11% Series 3...
Group B: 27% Series 1, 11% Series 2, 10% Series 3...

我知道一定有直接的函数,但由于我不习惯python的数据/绘图部分,我不知道它们,我正在努力寻找它们。

omjgkv6w

omjgkv6w1#

对于第一个问题,可以使用海运函数countplot,该函数专门用于分类值,如颜色标签。
seaborn's function countplot
对于你的第二个问题,你可以使用panda函数crosstab:

group = ['Group A', 'Group B', 'Group B', 'Group A', 'Group A', 'Group B', 'Group B', 'Group A']

series =[“系列2”,“系列1”,“系列5”,“系列4”,“系列1”,“系列3 ","系列3”,“系列2”] df = pd.数据框(列表(zip(组,系列)),列=[“组”,“系列”])

pd.crosstab(df['Group'], df['Series'], normalize=True)

crosstab can give you the desired percentages

相关问题