Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> hardware >> Mainframe >> .

Come posso creare e manipolare in modo efficiente un telaio 3D Panda?

Pandas non supporta direttamente i dati di dati 3D. La struttura fondamentale di un frame dati Panda è bidimensionale (righe e colonne). Per rappresentare i dati 3D, è necessario utilizzare un approccio diverso, in genere uno di questi:

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

Dati 3D campione (2x3x4)

data_3d =np.random.rand (2, 3, 4)

Crea un multiindex per le colonne

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

rimodellare i dati in un array 2D adatto per un frame dati

data_2d =data_3d.Reshape (2, 6)

Crea il frame dati con il multiindex

df =pd.DataFrame (data_2d, indice =intervallo (2), colonne =indice)

Stampa (DF)

Accesso ai dati:

print ("\ naccessing element at layer1 ='a', layer2 ='x', riga 0:")

print (df.loc [0, ('a', 'x'))

Accesso a una fetta:

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

Accesso ai dati:

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