1. Dati del panel (deprecati ma concettualmente pertinenti):
I panda avevano un oggetto "pannello", ma è deprecato. Era essenzialmente un contenitore per più frame di dati. Sebbene non sia direttamente utilizzabile ora, aiuta a comprendere l'approccio concettuale:immagina ogni telaio di dati che rappresenta una fetta lungo una dimensione.
2. Utilizzo di un singolo frame dati con un multiindex:
Questo è il metodo più efficiente e consigliato. Crei un multiindex per le tue colonne per rappresentare la terza dimensione.
`` `Python
Importa panda come PD
Importa Numpy come NP
data_3d =np.random.rand (2, 3, 4)
array =[
['A', 'A', 'B', 'B', 'C', 'C'], # Layer 1
['X', 'y', 'x', 'y', 'x', 'y'] # layer 2
"
tuples =elenco (zip (*array))
INDICE =pd.multiindex.from_tuples (tuples, nams =['layer1', 'layer2'])
data_2d =data_3d.Reshape (2, 6)
df =pd.DataFrame (data_2d, indice =intervallo (2), colonne =indice)
Stampa (DF)
print ("\ naccessing element at layer1 ='a', layer2 ='x', riga 0:")
print (df.loc [0, ('a', 'x'))
print ("\ naccessing tutti i dati per layer1 ='a':")
print (df.loc [:, 'a'])
#Adding di un nuovo livello (Layer3):
#Need per ristrutturare i dati per questo
new_data_3d =np.random.rand (2,3,4,2) #added una dimensione
new_data_2d =new_data_3d.reshape (2,12)
array =[
['A', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b'], # layer 1
['X', 'y', 'x', 'y', 'x', 'y', 'x', 'y', 'x', 'y', 'x', 'y'] # layer 2
, ['Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1'] # Layer 3
"
tuples =elenco (zip (*array))
index =pd.multiindex.from_tuples (tuples, nams =['layer1', 'layer2', 'layer3'])
df_new =pd.dataFrame (new_data_2d, index =intervallo (2), colonne =indice)
print ("\ ndataframe con un nuovo layer3:")
Stampa (DF_NEW)
`` `
3. Utilizzando un dizionario di dati di dati:
Questo è meno efficiente di un multiindex ma offre più flessibilità per scenari complessi.
`` `Python
data ={}
per i nell'intervallo (2):
Data [i] =pd.DataFrame (np.random.rand (3, 4))
Stampa (Data [0])
`` `
Scegliere l'approccio giusto:
* Multiindex: Meglio per la maggior parte dei casi, offre buone prestazioni e accesso efficiente ai dati se la terza dimensione è da relativamente piccola a moderata.
* Dizionario di dati di dati: Meglio se hai un numero significativamente maggiore di "livelli" nei tuoi dati 3D o se i tuoi diversi livelli hanno strutture molto diverse.
Ricorda di considerare attentamente come accederai e manipolerai i tuoi dati una volta strutturati in uno di questi modi. L'approccio multiindex è generalmente preferibile per la sua efficienza e le capacità integrate dei panda per lavorare con i multiindexes. Per set di dati molto grandi, prendi in considerazione l'utilizzo di Dask o VAEX progettati per il calcolo extra-core.
hardware © www.354353.com