Python 使用pd.DataFrame中的多索引打印数据
我从3个不同的数据帧(都具有相同的键)导入数据,并将其组合到一个数据帧中Python 使用pd.DataFrame中的多索引打印数据,python,pandas,dataframe,plot,seaborn,Python,Pandas,Dataframe,Plot,Seaborn,我从3个不同的数据帧(都具有相同的键)导入数据,并将其组合到一个数据帧中 df1 = read_xlsx('Means_Cent') df2 = read_xlsx('Means_Rand') df3 = read_xlsx('Means_Const') df1['Key'] = 'Cent' df2['Key'] = 'Rand' df3['Key'] = 'Const' df_means = pd.concat([df1,df2,df3], keys = ['Cent', 'Rand',
df1 = read_xlsx('Means_Cent')
df2 = read_xlsx('Means_Rand')
df3 = read_xlsx('Means_Const')
df1['Key'] = 'Cent'
df2['Key'] = 'Rand'
df3['Key'] = 'Const'
df_means = pd.concat([df1,df2,df3], keys = ['Cent', 'Rand', 'Const'])
现在,我想使用DataFrame.plot()创建一个绘图,在同一个图中,每个键=['Cent','Rand','Const']都有一个图
我的数据帧df_的部分意思如下:
02_VOI 03_Solidity 04_Total_Cells
Cent 0 1.430 19.470 132.0
1 1.415 18.880 131.0
2 1.460 19.695 135.0
3 1.520 19.695 141.0
Rand 0 1.430 19.205 132.0
1 1.430 19.170 132.0
2 1.445 19.430 133.5
3 1.560 19.820 144.5
Const 0 1.175 22.695 108.5
1 1.430 22.260 132.0
2 1.180 21.090 109.0
3 1.360 22.145 126.0
现在我想绘制02_VOI vs 04_Total_Cells,每个键应该有一个图(g1=02_VOI(分)vs 04_Total_Cells(分),g2=02_VOI(兰德)vs 04_Total_Cells(兰德)…)
我使用DataFrame.unstack()进行了尝试:
但这似乎把钥匙弄乱了。它返回9个图形(VOI(Cent,Rand,Const)与总单元格(Cent,Rand,Const)的每个组合1个图形)
感谢您的帮助,我也很高兴能为您提供有关如何更好地连接3个初始数据帧的提示。我想我会使用Seaborn绘图来实现这一点。这要简单得多。Seaborn喜欢数据 输出:
02_VOI 03_Solidity 04_Total_Cells
Cent 0 1.430 19.470 132.0
1 1.415 18.880 131.0
2 1.460 19.695 135.0
3 1.520 19.695 141.0
Rand 0 1.430 19.205 132.0
1 1.430 19.170 132.0
2 1.445 19.430 133.5
3 1.560 19.820 144.5
Const 0 1.175 22.695 108.5
1 1.430 22.260 132.0
2 1.180 21.090 109.0
3 1.360 22.145 126.0
根据需要重置索引和重命名列
df_mean = df_mean.reset_index()
df_mean = df_mean.rename(columns={'level_0':'Groups','level_1':'Samples'})
_ = sns.lmplot(x='02_VOI',y='04_Total_Cells', data=df_mean, scatter=True, col='Groups',fit_reg=False)
02_VOI 03_Solidity 04_Total_Cells
Cent 0 1.430 19.470 132.0
1 1.415 18.880 131.0
2 1.460 19.695 135.0
3 1.520 19.695 141.0
Rand 0 1.430 19.205 132.0
1 1.430 19.170 132.0
2 1.445 19.430 133.5
3 1.560 19.820 144.5
Const 0 1.175 22.695 108.5
1 1.430 22.260 132.0
2 1.180 21.090 109.0
3 1.360 22.145 126.0
df_mean = df_mean.reset_index()
df_mean = df_mean.rename(columns={'level_0':'Groups','level_1':'Samples'})
_ = sns.lmplot(x='02_VOI',y='04_Total_Cells', data=df_mean, scatter=True, col='Groups',fit_reg=False)