2017-04-12 4 views
1

Ich importiere Daten von 3 verschiedenen Datenrahmen (alle mit den gleichen Schlüsseln) und setzen Sie es zu 1 einzigen Datenrahmen zusammen.Daten plotten mit MultiIndex von pd.DataFrame

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

Jetzt möchte ich eine Handlung erstellen DataFrame.plot() verwendet, wo ich 1 Graph haben für jeden Schlüssel = [ 'Cent', 'Rand', 'Const'] in der gleichen Figur.

Teil meiner Datenrahmen df_means sieht wie folgt aus:

  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 

Jetzt habe ich 02_VOI vs 04_Total_Cells plotten möchten, und es sollte ein Diagramm für jede Taste (g1 = 02_VOI (Cent) vs 04_Total_Cells (Cent) sein , g2 = 02_VOI (Rand) vs 04_Total_Cells (Rand) ...)

ich versuchte es DataFrame.unstack mit():

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

aber dies scheint den Schlüssel zu vermasseln. Es gibt 9 Grafiken (1 für jede Kombination von VOI (Cent, Rand, Const) vs Total_Cells (Cent, Rand, Const).

Vielen Dank für Ihre Hilfe, ich bin auch glücklich für Tipps, wie Sie die Verbindung besser verbinden . 3 Anfangsdatenrahmen

Antwort

2

ich glaube, ich Seaborn Plots für diesen Einsatz wäre Es ist viel einfacher Seaborn mag "tidy" Daten

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

Ausgang:...

  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 

Index zurücksetzen und neu Spalten benennen, wie Sie möchten.

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

Verwandte Themen