1. Δεδομένα πάνελ (απογοητευμένα αλλά εννοιολογικά συναφή):
Ο Pandas χρησιμοποιούσε ένα αντικείμενο "panel`, αλλά είναι καταργημένο. Ήταν ουσιαστικά ένα δοχείο για πολλαπλά πλαίσια δεδομένων. Παρόλο που δεν είναι άμεσα χρησιμοποιήσιμο τώρα, βοηθά στην κατανόηση της εννοιολογικής προσέγγισης:φανταστείτε κάθε πλαίσιο δεδομένων που αντιπροσωπεύει μια φέτα κατά μήκος μιας διάστασης.
2. Χρησιμοποιώντας ένα ενιαίο πλαίσιο δεδομένων με ένα Multiindex:
Αυτή είναι η πιο αποτελεσματική και συνιστώμενη μέθοδος. Δημιουργείτε ένα multiindex για τις στήλες σας για να αντιπροσωπεύετε την τρίτη διάσταση.
`` `Python
Εισαγωγή pandas ως PD
Εισαγωγή Numpy ως NP
data_3d =np.random.rand (2, 3, 4)
arrays =[
['A', 'a', 'b', 'b', 'c', 'c'], # layer 1
['X', 'y', 'x', 'y', 'x', 'y'] # layer 2
]
FUPLES =LIST (ZIP (*Arrays))
index =pd.multiindex.from_tuples (πλειάδες, ονόματα =['layer1', 'layer2']))
data_2d =data_3d.reshape (2, 6)
df =pd.dataFrame (data_2d, index =εύρος (2), στήλες =δείκτης)
εκτύπωση (DF)
εκτύπωση ("\ naccessing στοιχείο στο layer1 ='a', layer2 ='x', σειρά 0:")
εκτύπωση (df.loc [0, ('a', 'x')]))
εκτύπωση ("\ naccessing όλα τα δεδομένα για το layer1 ='a':")
εκτύπωση (df.loc [:, 'a'])
#Προσθέστε ένα νέο στρώμα (Layer3):
#Δεν πρέπει να αναδιαρθρώσετε τα δεδομένα για αυτό
new_data_3d =np.random.rand (2,3,4,2) #προσθέτουν μια διάσταση
new_data_2d =new_data_3d.reshape (2,12)
arrays =[
['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
]
FUPLES =LIST (ZIP (*Arrays))
index =pd.multiindex.from_tuples (πλειάδες, ονόματα =['layer1', 'layer2', 'layer3']))
df_new =pd.dataFrame (new_data_2d, index =εύρος (2), στήλες =δείκτης)
εκτύπωση ("\ ndataFrame με ένα νέο layer3:")
εκτύπωση (df_new)
`` `
3. Χρησιμοποιώντας ένα λεξικό DataFrames:
Αυτό είναι λιγότερο αποτελεσματικό από ένα multiindex, αλλά προσφέρει μεγαλύτερη ευελιξία για σύνθετα σενάρια.
`` `Python
δεδομένα ={}
για το I στην περιοχή (2):
δεδομένα [i] =pd.dataframe (np.random.rand (3, 4))
εκτύπωση (δεδομένα [0])
`` `
Επιλογή της σωστής προσέγγισης:
* multiindex: Το καλύτερο για τις περισσότερες περιπτώσεις, προσφέρει καλή απόδοση και αποτελεσματική πρόσβαση δεδομένων εάν η τρίτη διάσταση σας είναι σχετικά μικρή έως μέτρια.
* Λεξικό DataFrames: Καλύτερα εάν έχετε σημαντικά μεγαλύτερο αριθμό "στρωμάτων" στα δεδομένα 3D ή εάν τα διαφορετικά σας στρώματα έχουν πολύ διαφορετικές δομές.
Θυμηθείτε να εξετάσετε προσεκτικά πώς θα έχετε πρόσβαση και χειριστείτε τα δεδομένα σας μόλις είναι δομημένο με έναν από αυτούς τους τρόπους. Η προσέγγιση Multiindex είναι γενικά προτιμότερη λόγω της αποτελεσματικότητάς της και των ενσωματωμένων δυνατοτήτων της PANDAS για συνεργασία με πολλαπλές δείκτες. Για πολύ μεγάλα σύνολα δεδομένων, σκεφτείτε τη χρήση Dask ή VAEX που έχουν σχεδιαστεί για υπολογισμό εκτός πυρήνων.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα