嵌套 Pandas 数据框的 FaceGrid
FaceGrid of nested Pandas dataframe
我需要使用 FaceGrid 绘制以下数据框,这样网格的每一行都对应于 k_week
给出的特定周,列是数据框的列( Sensitivity
、Specificity
等)。每个箱线图应包含 6 个模型('Sig'、'MRM'、'Mean' 等)
这里是单行的例子(我成功拿到了):
现在我需要使用 FaceGrid 在单个图形上获得这样的 6 行。
数据框:
df.groupby('k_week').head(6)
Sensitivity Specificity Accuracy PPV AUC k_week model
0 0.609948 0.867516 0.717291 0.776004 0.813680 4 Sig
1 0.586824 0.851647 0.685525 0.757557 0.784805 4 MRM
2 0.581152 0.842510 0.670357 0.749651 0.737269 4 Mean
3 0.473386 0.601827 0.395841 0.556193 0.542679 4 Rmssd
4 0.511344 0.717240 0.499148 0.644086 0.626719 4 MissVal
5 0.454625 0.523924 0.356061 0.508448 0.501661 4 Rand
0 0.792619 0.764423 0.755839 0.777934 0.835871 6 Sig
1 0.722077 0.758113 0.733090 0.740845 0.803949 6 MRM
2 0.633899 0.735877 0.688298 0.687011 0.736115 6 Mean
3 0.437296 0.613582 0.510095 0.529108 0.544014 6 Rmssd
4 0.517309 0.740986 0.647588 0.633803 0.653312 6 MissVal
5 0.439582 0.532452 0.477898 0.502504 0.499943 6 Rand
0 0.716681 0.778103 0.762680 0.747469 0.826501 8 Sig
1 0.675493 0.772834 0.747396 0.724285 0.796723 8 MRM
2 0.633127 0.743852 0.710935 0.688628 0.732537 8 Mean
3 0.430421 0.685597 0.576665 0.558327 0.588858 8 Rmssd
4 0.577817 0.671838 0.636629 0.624945 0.652066 8 MissVal
5 0.470138 0.520199 0.494885 0.497872 0.505699 8 Rand
0 0.744211 0.823977 0.778372 0.787783 0.849315 12 Sig
1 0.672321 0.826884 0.763375 0.756750 0.812551 12 MRM
2 0.623856 0.700291 0.633579 0.665608 0.719829 12 Mean
3 0.405223 0.711921 0.538847 0.572755 0.581289 12 Rmssd
4 0.592623 0.751062 0.664152 0.679169 0.709493 12 MissVal
5 0.543888 0.463655 0.450788 0.496762 0.490970 12 Rand
0 0.775064 0.794737 0.821246 0.783939 0.855578 20 Sig
1 0.734351 0.745820 0.778527 0.739525 0.809667 20 MRM
2 0.571756 0.759133 0.742810 0.656285 0.724444 20 Mean
3 0.649109 0.433437 0.582287 0.551816 0.568039 20 Rmssd
4 0.540712 0.820743 0.785873 0.667039 0.741546 20 MissVal
5 0.550127 0.448916 0.546867 0.506564 0.498109 20 Rand
0 0.813607 0.824252 0.891650 0.817440 0.889695 50 Sig
1 0.671687 0.789921 0.850381 0.714253 0.826069 50 MRM
2 0.677002 0.769764 0.839411 0.710398 0.772619 50 Mean
3 0.410524 0.658583 0.681270 0.499830 0.563487 50 Rmssd
4 0.630758 0.773543 0.831970 0.682164 0.778421 50 MissVal
5 0.609142 0.384882 0.638997 0.525116 0.496973 50 Rand
您必须先融化数据,以便列名成为另一列中的值。
print(df.head(10))
Sensitivity Specificity Accuracy PPV AUC k_week model
0 0.609948 0.867516 0.717291 0.776004 0.813680 4 Sig
1 0.586824 0.851647 0.685525 0.757557 0.784805 4 MRM
2 0.581152 0.842510 0.670357 0.749651 0.737269 4 Mean
3 0.473386 0.601827 0.395841 0.556193 0.542679 4 Rmssd
4 0.511344 0.717240 0.499148 0.644086 0.626719 4 MissVal
5 0.454625 0.523924 0.356061 0.508448 0.501661 4 Rand
0 0.792619 0.764423 0.755839 0.777934 0.835871 6 Sig
1 0.722077 0.758113 0.733090 0.740845 0.803949 6 MRM
2 0.633899 0.735877 0.688298 0.687011 0.736115 6 Mean
3 0.437296 0.613582 0.510095 0.529108 0.544014 6 Rmssd
df = df.melt(id_vars=['k_week', 'model'])
print(df.head(10))
k_week model variable value
0 4 Sig Sensitivity 0.609948
1 4 MRM Sensitivity 0.586824
2 4 Mean Sensitivity 0.581152
3 4 Rmssd Sensitivity 0.473386
4 4 MissVal Sensitivity 0.511344
5 4 Rand Sensitivity 0.454625
6 6 Sig Sensitivity 0.792619
7 6 MRM Sensitivity 0.722077
8 6 Mean Sensitivity 0.633899
9 6 Rmssd Sensitivity 0.437296
grid = sns.FacetGrid(df, row='k_week', col='variable')
grid.map_dataframe(sns.boxplot, x='model', y='value')
我需要使用 FaceGrid 绘制以下数据框,这样网格的每一行都对应于 k_week
给出的特定周,列是数据框的列( Sensitivity
、Specificity
等)。每个箱线图应包含 6 个模型('Sig'、'MRM'、'Mean' 等)
这里是单行的例子(我成功拿到了):
现在我需要使用 FaceGrid 在单个图形上获得这样的 6 行。
数据框:
df.groupby('k_week').head(6)
Sensitivity Specificity Accuracy PPV AUC k_week model
0 0.609948 0.867516 0.717291 0.776004 0.813680 4 Sig
1 0.586824 0.851647 0.685525 0.757557 0.784805 4 MRM
2 0.581152 0.842510 0.670357 0.749651 0.737269 4 Mean
3 0.473386 0.601827 0.395841 0.556193 0.542679 4 Rmssd
4 0.511344 0.717240 0.499148 0.644086 0.626719 4 MissVal
5 0.454625 0.523924 0.356061 0.508448 0.501661 4 Rand
0 0.792619 0.764423 0.755839 0.777934 0.835871 6 Sig
1 0.722077 0.758113 0.733090 0.740845 0.803949 6 MRM
2 0.633899 0.735877 0.688298 0.687011 0.736115 6 Mean
3 0.437296 0.613582 0.510095 0.529108 0.544014 6 Rmssd
4 0.517309 0.740986 0.647588 0.633803 0.653312 6 MissVal
5 0.439582 0.532452 0.477898 0.502504 0.499943 6 Rand
0 0.716681 0.778103 0.762680 0.747469 0.826501 8 Sig
1 0.675493 0.772834 0.747396 0.724285 0.796723 8 MRM
2 0.633127 0.743852 0.710935 0.688628 0.732537 8 Mean
3 0.430421 0.685597 0.576665 0.558327 0.588858 8 Rmssd
4 0.577817 0.671838 0.636629 0.624945 0.652066 8 MissVal
5 0.470138 0.520199 0.494885 0.497872 0.505699 8 Rand
0 0.744211 0.823977 0.778372 0.787783 0.849315 12 Sig
1 0.672321 0.826884 0.763375 0.756750 0.812551 12 MRM
2 0.623856 0.700291 0.633579 0.665608 0.719829 12 Mean
3 0.405223 0.711921 0.538847 0.572755 0.581289 12 Rmssd
4 0.592623 0.751062 0.664152 0.679169 0.709493 12 MissVal
5 0.543888 0.463655 0.450788 0.496762 0.490970 12 Rand
0 0.775064 0.794737 0.821246 0.783939 0.855578 20 Sig
1 0.734351 0.745820 0.778527 0.739525 0.809667 20 MRM
2 0.571756 0.759133 0.742810 0.656285 0.724444 20 Mean
3 0.649109 0.433437 0.582287 0.551816 0.568039 20 Rmssd
4 0.540712 0.820743 0.785873 0.667039 0.741546 20 MissVal
5 0.550127 0.448916 0.546867 0.506564 0.498109 20 Rand
0 0.813607 0.824252 0.891650 0.817440 0.889695 50 Sig
1 0.671687 0.789921 0.850381 0.714253 0.826069 50 MRM
2 0.677002 0.769764 0.839411 0.710398 0.772619 50 Mean
3 0.410524 0.658583 0.681270 0.499830 0.563487 50 Rmssd
4 0.630758 0.773543 0.831970 0.682164 0.778421 50 MissVal
5 0.609142 0.384882 0.638997 0.525116 0.496973 50 Rand
您必须先融化数据,以便列名成为另一列中的值。
print(df.head(10))
Sensitivity Specificity Accuracy PPV AUC k_week model
0 0.609948 0.867516 0.717291 0.776004 0.813680 4 Sig
1 0.586824 0.851647 0.685525 0.757557 0.784805 4 MRM
2 0.581152 0.842510 0.670357 0.749651 0.737269 4 Mean
3 0.473386 0.601827 0.395841 0.556193 0.542679 4 Rmssd
4 0.511344 0.717240 0.499148 0.644086 0.626719 4 MissVal
5 0.454625 0.523924 0.356061 0.508448 0.501661 4 Rand
0 0.792619 0.764423 0.755839 0.777934 0.835871 6 Sig
1 0.722077 0.758113 0.733090 0.740845 0.803949 6 MRM
2 0.633899 0.735877 0.688298 0.687011 0.736115 6 Mean
3 0.437296 0.613582 0.510095 0.529108 0.544014 6 Rmssd
df = df.melt(id_vars=['k_week', 'model'])
print(df.head(10))
k_week model variable value
0 4 Sig Sensitivity 0.609948
1 4 MRM Sensitivity 0.586824
2 4 Mean Sensitivity 0.581152
3 4 Rmssd Sensitivity 0.473386
4 4 MissVal Sensitivity 0.511344
5 4 Rand Sensitivity 0.454625
6 6 Sig Sensitivity 0.792619
7 6 MRM Sensitivity 0.722077
8 6 Mean Sensitivity 0.633899
9 6 Rmssd Sensitivity 0.437296
grid = sns.FacetGrid(df, row='k_week', col='variable')
grid.map_dataframe(sns.boxplot, x='model', y='value')