我有一张这样的桌子:
ID var1. var2. var3. var4. var5. var6. var7 var8 var9 ... var22 ...
A. 1. 1. 7. 0. 0.6. 0. 7. 2. 2,4. ....
B 9. 1. 7. 0. 0.6. 0. 7. 2. 2,4. ....
C 0. 1. 0. 8. 0.5. 5. 7. 2.9. 2,8. ....
而且我想为每个ID建立条形图并将它们全部绑定在面板上,我对面板的想法就像here。因此,“ x”将是变量(即列名),“ y”将是此数据帧中列的值。
一个重要的事情是我不想要在图上显示具有给定ID的零值的变量,例如:对于ID'A',var4和var6例如,它们不会出现在ID为“ A”的图形上,但是它们将会出现在ID为“ C”的图形上。
使用DataFrame的此子集:
编号var1。 var2。 var3。 var4。 var5。 var6。 var7 var8 var9A. 1. 1. 7. 0. 0.6 0. 7. 2. 2.4B 9. 1. 7. 0. 0.6 0. 7. 2. 2.4C 0. 1. 0. 8. 0. 5. 7. 2.9 2.8
从宽到长:
df_melted = df.melt(id_vars='ID')
提取变量号:
df_melted['var'] = df_melted['variable'].str.extract('(\d+)')[0]
带有seaborn的图:
import seaborn as sns
variables = sorted(df_melted['var'].unique())
g = sns.FacetGrid(df_melted,col='ID',hue='var',col_wrap=2)
g.map(sns.barplot,'var','value',order=variables)
plt.show()