2017-04-12 2 views
1

3 개의 다른 데이터 프레임 (모두 동일한 키)에서 데이터를 가져 와서 하나의 단일 데이터 프레임으로 합치십시오.pd.DataFrame의 MultiIndex로 플롯 데이터

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']) 

는 이제 동일한 도면 [ '랜드', '헌장'센트 '] I 모든 키 = 1 그래프를 DataFrame.plot()을 사용하여 그래프를 작성하고 싶다.

  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 

가 지금은 04_Total_Cells 대 02_VOI을 플롯하려면, 그것은 각각의 키 (G1 = 04_Total_Cells 대 02_VOI (센트) (센트) 1 그래프해야합니다 : 내 dataframe의 df_means의

일부는 다음과 같습니다

df_means.unstack(level = 0).plot(x = '02_VOI', y = '04_Total_Cells') 

을하지만이 엉망 키에 보인다, 04_Total_Cells 대 G2 = 02_VOI (랜드) (랜드) ...)

나는() DataFrame.unstack를 사용하여 시도했다. VOI (Cent, Rand, Const)와 Total_Cells (Cent, Rand, Const)의 각 조합에 대해 1 개의 그래프를 반환합니다.

감사합니다. 도움을 주셔서 감사합니다. . 3 초기 dataframes

답변

2

은 내가 이것에 대한 시본 플롯을 사용하는 것이라고 생각 그것은 훨씬 더 쉽게 시본이 "tidy" 데이터를 좋아

import pandas as pd 
import seaborn as sns 
df_mean = pd.read_clipboard() 
df_mean 

출력 :...

  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) 

enter image description here