Seaborn和Pandas:使用python中的多索引数据制作多个x类条形图
我有一个多索引数据框,我已经融化成这样:Seaborn和Pandas:使用python中的多索引数据制作多个x类条形图,python,pandas,dataframe,seaborn,Python,Pandas,Dataframe,Seaborn,我有一个多索引数据框,我已经融化成这样: Color Frequency variable value Red 2-3 times a month x 22 Red A few days a week x 45 Red At least once a day x 344 Red Never x
Color Frequency variable value
Red 2-3 times a month x 22
Red A few days a week x 45
Red At least once a day x 344
Red Never x 5
Red Once a month x 1
Red Once a week x 0
Red Once every few months x 4
Blue 2-3 times a month x 4
Blue A few days a week x 49
Blue At least once a day x 200
Blue Never x 7
Blue Once a month x 19
Blue Once a week x 10
Blue Once every few months x 5
Red 2-3 times a month y 3
Red A few days a week y 97
Red At least once a day y 144
Red Never y 4
Red Once a month y 0
Red Once a week y 0
Red Once every few months y 4
Blue 2-3 times a month y 44
Blue A few days a week y 62
Blue At least once a day y 300
Blue Never y 2
Blue Once a month y 4
Blue Once a week y 23
Blue Once every few months y 6
Red 2-3 times a month z 4
Red A few days a week z 12
Red At least once a day z 101
Red Never z 0
Red Once a month z 0
Red Once a week z 10
Red Once every few months z 0
Blue 2-3 times a month z 100
Blue A few days a week z 203
Blue At least once a day z 299
Blue Never z 0
Blue Once a month z 0
Blue Once a week z 204
Blue Once every few months z 100
我正在尝试制作一个seaborn图,其中x轴变量
和频率
分为两类,色调基于颜色
。此外,我希望y轴是值
与每个颜色的变量
值之和的比例;e、 g.变量“每月x.2-3次”的y值应为22/(22+45+344+5+1+0+4)或5.22%
到目前为止,我有:
import seaborn as sns
fig, ax1 = plt.subplots(figsize=(20, 10))
sns.factorplot(x='variable',y='value', hue='Frequency', data=df, kind='bar', ax=ax1)
这是通往那里的道路的一部分。如何按1)颜色和2)取每个变量和频率的值的比例,而不是计数进行分组?这就是您需要找到该组每个数字的部分的原因:
df['proportion'] = df['value'] / df.groupby(['Color','variable'])['value'].transform('sum')
输出:
variable Frequency Color value portion
0 x 2-3 times a month Red 22 0.052257
1 x A few days a week Red 45 0.106888
2 x At least once a day Red 344 0.817102
3 x Never Red 5 0.011876
4 x Once a month Red 1 0.002375
5 x Once a week Red 0 0.000000
6 x Once every few months Red 4 0.009501
7 x 2-3 times a month Blue 4 0.013605
8 x A few days a week Blue 49 0.166667
9 x At least once a day Blue 200 0.680272
10 x Never Blue 7 0.023810
11 x Once a month Blue 19 0.064626
12 x Once a week Blue 10 0.034014
13 x Once every few months Blue 5 0.017007
14 y 2-3 times a month Red 3 0.011905
15 y A few days a week Red 97 0.384921
16 y At least once a day Red 144 0.571429
17 y Never Red 4 0.015873
18 y Once a month Red 0 0.000000
19 y Once a week Red 0 0.000000
20 y Once every few months Red 4 0.015873
21 y 2-3 times a month Blue 44 0.099773
22 y A few days a week Blue 62 0.140590
23 y At least once a day Blue 300 0.680272
24 y Never Blue 2 0.004535
25 y Once a month Blue 4 0.009070
26 y Once a week Blue 23 0.052154
27 y Once every few months Blue 6 0.013605
28 z 2-3 times a month Red 4 0.031496
29 z A few days a week Red 12 0.094488
30 z At least once a day Red 101 0.795276
31 z Never Red 0 0.000000
32 z Once a month Red 0 0.000000
33 z Once a week Red 10 0.078740
34 z Once every few months Red 0 0.000000
35 z 2-3 times a month Blue 100 0.110375
36 z A few days a week Blue 203 0.224062
37 z At least once a day Blue 299 0.330022
38 z Never Blue 0 0.000000
39 z Once a month Blue 0 0.000000
40 z Once a week Blue 204 0.225166
41 z Once every few months Blue 100 0.110375
在s/o上做什么洁食的事情?将你的答案标记为正确,然后问一个关于图表的新问题?或者顺其自然,看看是否有其他人回答?如果这回答了你的问题,你可以接受。然后,问一个关于图表的更简洁的问题。