Το Pandas DataFrame είναι μια δομή δεδομένων Python που μπορεί να χρησιμοποιηθεί για τη δημιουργία και τον χειρισμό πινάκων. Εξηγούμε τη δομή της δομής δεδομένων και τις πιο σημαντικές μεθόδους και ιδιότητές της.

Πώς λειτουργεί το Pandas DataFrame;

Τα Pandas DataFrames αποτελούν τον πυρήνα της βιβλιοθήκης Python Pandas και επιτρέπουν την αποτελεσματική και ευέλικτη ανάλυση δεδομένων σε Python. Ένα Pandas DataFrame είναι μια δισδιάστατη δομή δεδομένων σε μορφή πίνακα με αριθμημένες σειρές και στήλες με ετικέτες. Αυτή η δομή επιτρέπει την οργάνωση των δεδομένων σε μια εύκολα κατανοητή και εύχρηστη μορφή, παρόμοια με τα προγράμματα υπολογιστικών φύλλων όπως το Excel ή το LibreOffice. Κάθε στήλη σε ένα DataFrame μπορεί να περιέχει διαφορετικούς τύπους δεδομένων Python, πράγμα που σημαίνει ότι ένα DataFrame μπορεί να αποθηκεύει ετερογενή δεδομένα – για παράδειγμα αριθμητικές τιμές, συμβολοσειρές και booleans σε έναν ενιαίο πίνακα.

Tip

Τα DataFrames του Pandas βασίζονται σε πίνακες NumPy, οι οποίοι επιτρέπουν την αποτελεσματική διαχείριση δεδομένων και τον υπολογισμό τιμών. Ωστόσο, τα DataFrames του Pandas διαφέρουν από τις δομές δεδομένων NumPy σε ορισμένα σημεία, για παράδειγμα στην ετερογένειά τους και στον αριθμό των διαστάσεών τους. Για αυτόν τον λόγο, οι δομές δεδομένων NumPy είναι κατάλληλες για τη διαχείριση τεράστιων ποσοτήτων αριθμητικών τιμών, ενώ οι δομές δεδομένων του Pandas είναι πιο κατάλληλες για τη γενική διαχείριση δεδομένων.

Δομή των πλαισίων δεδομένων Pandas

Ένα DataFrame έχει τρία βασικά στοιχεία: τα δεδομένα, τους δείκτες σειρών και τα ονόματα στηλών. Ο δείκτης σειράς (ή απλά δείκτης) προσδιορίζει με μοναδικό τρόπο κάθε σειρά. Από προεπιλογή, οι σειρές ευρετηριάζονται με αριθμητικές τιμές, αλλά αυτές μπορούν να αντικατασταθούν με συμβολοσειρές. Είναι σημαντικό να σημειωθεί ότι τα Pandas DataFrames έχουν μηδενικό δείκτη, που σημαίνει ότι οι δείκτες ξεκινούν από το 0.

Image: The structure of a Pandas DataFrame
Pandas DataFrames have a tabular structure and are therefore very similar to Excel or SQL tables.
Note

Αν και τα Pandas DataFrames είναι από τις πιο δημοφιλείς και χρήσιμες δομές δεδομένων της Python, δεν αποτελούν μέρος της βασικής γλώσσας και πρέπει να εισαχθούν ξεχωριστά. Αυτό γίνεται χρησιμοποιώντας τη γραμμή import pandas ή from pandas import DataFrame στην αρχή του αρχείου σας. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε import pandas as pd αν θέλετε να αναφερθείτε στο module με ένα συντομότερο όνομα (στην περίπτωση αυτή «pd»).

Χρήση των πλαισίων δεδομένων Pandas

Τα Pandas DataFrames παρέχουν διάφορες τεχνικές και μεθόδους για την αποτελεσματική επεξεργασία, ανάλυση και οπτικοποίηση δεδομένων. Παρακάτω, θα μάθετε βασικές έννοιες και μεθόδους για τον χειρισμό δεδομένων χρησιμοποιώντας Pandas DataFrames.

Πώς να δημιουργήσετε ένα Pandas DataFrame

Εάν έχετε ήδη αποθηκεύσει τα δεδομένα που επιθυμείτε σε μια λίστα Python ή ένα λεξικό Python, μπορείτε εύκολα να δημιουργήσετε ένα DataFrame από αυτά. Απλώς μεταφέρετε την υπάρχουσα δομή δεδομένων στον κατασκευαστή DataFrame χρησιμοποιώντας pandas.DataFrame([data]). Ο τρόπος με τον οποίο το Pandas ερμηνεύει τα δεδομένα σας θα εξαρτηθεί από τη δομή που παρέχετε. Για παράδειγμα, μπορείτε να δημιουργήσετε ένα Pandas DataFrames από μια λίστα Python ως εξής:

import pandas
lists = ["Ahmed", "Beatrice", "Candice", "Donovan", "Elisabeth", "Frank"]
df = pandas.DataFrame(list)
print(df)
# Output:
#            0
# 0     	Ahmed
# 1      	Beatrice
# 2     	Candice
# 3    		Donovan
# 4  	  	Elisabeth
# 5  		Frank
python

Όπως μπορείτε να δείτε στο παραπάνω παράδειγμα, με απλές λίστες μπορείτε να δημιουργήσετε μόνο DataFrames με μία μόνο στήλη χωρίς ετικέτα. Για αυτόν τον λόγο, συνιστάται να δημιουργείτε DataFrames από λεξικά που περιέχουν λίστες. Τα κλειδιά ερμηνεύονται ως ονόματα στηλών και οι λίστες ως τα σχετικά δεδομένα. Το παρακάτω παράδειγμα χρησιμεύει για να το επεξηγήσει αυτό:

import pandas
datA = {
    'Name': ['Arthur', 'Bruno', 'Christoph'],
    'Age': [34, 30, 55],
    'Income': [75000.0, 60000.5, 90000.3],
}
df = pandas.DataFrame(data)
print(df)
# Output:
#         Name  Age   Income
# 0     Arthur     34  75000.0
# 1      Bruno     30  60000.5
# 2  Christoph     55  90000.3
python

Χρησιμοποιώντας αυτή τη μέθοδο, το DataFrame αποκτά αμέσως την επιθυμητή μορφή και τις επιθυμητές επικεφαλίδες. Ωστόσο, αν δεν θέλετε να βασιστείτε στις ενσωματωμένες δομές δεδομένων της Python, μπορείτε επίσης να φορτώσετε τα δεδομένα σας από μια εξωτερική πηγή, όπως ένα αρχείο CSV ή μια βάση δεδομένων SQL. Απλά καλέστε την κατάλληλη συνάρτηση Pandas:

import pandas
import sqlalchemy
# DataFrame of CSV:
csv = pandas.read_csv("csv-data/files.csv")
# DataFrame of SQL:
engine = create_engine('postgresql://username:password@localhost:5432/mydatabase')
sql = pandas.read_sql_query('SELECT * FROM table', engine)
python

Τα DataFrames csv και sql στο παραπάνω παράδειγμα περιέχουν τώρα όλα τα δεδομένα από το data.csv και τον πίνακα SQL table. Κατά τη δημιουργία ενός DataFrame από μια εξωτερική πηγή, μπορείτε να καθορίσετε πρόσθετες λεπτομέρειες, για παράδειγμα αν οι αριθμητικοί δείκτες πρέπει να συμπεριληφθούν στο DataFrame ή όχι. Μάθετε περισσότερα σχετικά με τα πρόσθετα επιχειρήματα των δύο συναρτήσεων στην επίσημη σελίδα τεκμηρίωσης του Pandas DataFrame.

Tip

Για να δημιουργήσετε ένα Pandas DataFrame από έναν πίνακα SQL, πρέπει να χρησιμοποιήσετε το Pandas σε συνδυασμό με ένα Python SQL module όπως το SQLAlchemy. Δημιουργήστε μια σύνδεση με τη βάση δεδομένων χρησιμοποιώντας το SQL module που έχετε επιλέξει και μεταβιβάστε την στο read_sql_query().

Πώς να εμφανίσετε δεδομένα σε Pandas DataFrames

Με τα Pandas DataFrames, μπορείτε να εμφανίσετε όχι μόνο ολόκληρο τον πίνακα, αλλά και μεμονωμένες σειρές και στήλες. Μπορείτε να επιλέξετε συγκεκριμένες σειρές και στήλες για προβολή. Το παρακάτω παράδειγμα δείχνει πώς να εμφανίσετε μεμονωμένες ή πολλαπλές σειρές και στήλες:

# Output 0-th line
print(df.loc[0])
# Output lines 3 to 6
print(df.loc[3:6])
# Output lines 3 and 6
print(df.loc[[3, 6]])
# Output "Occupation" column
print(df["Occupation"])
# Output "Occupation" and "Age" columns
print(df[["Occupation", "Age"]])
# Selection of multiple rows and columns
print(df.loc[[3, 6], ['Occupation', 'Age']])
python

Στο παράδειγμα, η αναφορά σε μια στήλη γίνεται χρησιμοποιώντας το όνομά της σε μονές αγκύλες, παρόμοια με τον τρόπο πρόσβασης σε τιμές σε λεξικά Python. Αντίθετα, το χαρακτηριστικό loc χρησιμοποιείται για την αναφορά σε σειρές. Με loc μπορείτε επίσης να εφαρμόσετε λογικές συνθήκες για το φιλτράρισμα δεδομένων. Το ακόλουθο μπλοκ κώδικα δείχνει πώς να εμφανίσετε μόνο τις σειρές όπου η τιμή για την «ηλικία» είναι μεγαλύτερη από 30:

print(df.loc[df['Age'] > 30])
python

Ωστόσο, μπορείτε επίσης να χρησιμοποιήσετε το χαρακτηριστικό iloc για να επιλέξετε σειρές και στήλες με βάση τη θέση τους στο DataFrame. Για παράδειγμα, μπορείτε να εμφανίσετε το κελί που βρίσκεται στην τρίτη σειρά και την τέταρτη στήλη:

print(df.iloc[3, 4]) 
# Output: 
# London
 
print(df.iloc[[3, 4, 6], 4]) 
# Output: 
# 3 London
# 4 Birmingham
# 6 Preston
python

Πώς να επαναλάβετε γραμμές με Pandas DataFrames

Κατά την επεξεργασία δεδομένων σε Python, είναι συχνά απαραίτητο να επαναλαμβάνουμε τις σειρές ενός Pandas DataFrames για να εφαρμόσουμε την ίδια λειτουργία σε όλα τα δεδομένα. Το Pandas παρέχει δύο μεθόδους για το σκοπό αυτό: itertuples() και iterrows(). Κάθε μέθοδος έχει τα δικά της πλεονεκτήματα και μειονεκτήματα όσον αφορά την απόδοση και τη φιλικότητα προς τον χρήστη.

Η μέθοδος iterrows() επιστρέφει μια τούπλα με δείκτη και σειρά για κάθε σειρά στο DataFrame. Μια σειρά είναι μια δομή δεδομένων Pandas ή NumPy παρόμοια με μια λίστα Python, αλλά προσφέρει καλύτερη απόδοση. Μπορείτε να αποκτήσετε πρόσβαση σε μεμονωμένα στοιχεία της σειράς χρησιμοποιώντας το όνομα της στήλης, το οποίο απλοποιεί τη διαχείριση των δεδομένων.

Αν και οι σειρές Pandas είναι πιο αποδοτικές από τις λίστες Python, εξακολουθούν να έχουν κάποιο επιπλέον κόστος απόδοσης. Επομένως, η μέθοδος itertuples() συνιστάται ιδιαίτερα για πολύ μεγάλα DataFrames. Σε αντίθεση με iterrows(), itertuples() επιστρέφει ολόκληρη τη σειρά, συμπεριλαμβανομένου του δείκτη, ως τούπλες, οι οποίες έχουν καλύτερη απόδοση από τις σειρές. Με τις τούπλες, μπορείτε να έχετε πρόσβαση σε μεμονωμένα στοιχεία χρησιμοποιώντας τη σημειογραφία τελείας, παρόμοια με την πρόσβαση σε χαρακτηριστικά ενός αντικειμένου.

Μια άλλη σημαντική διαφορά μεταξύ σειρών και πλειάδων είναι ότι οι πλειάδες δεν είναι μεταβλητές. Επομένως, αν θέλετε να επαναλάβετε ένα DataFrame χρησιμοποιώντας itertuples() και να αλλάξετε τιμές, πρέπει να αναφερθείτε στο DataFrame με το at χαρακτηριστικό και τον δείκτη της πλειάδας. Αυτό το χαρακτηριστικό λειτουργεί με πολύ παρόμοιο τρόπο με loc. Το ακόλουθο παράδειγμα χρησιμεύει για να απεικονίσει τις διαφορές μεταξύ iterrows() και itertuples():

import pandas
df = pandas.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'], 
    'Age': [25, 30, 35], 
    'Income ': [70000.0, 80000.5, 90000.3]
})
for index, row in df.iterrows():
        row['Income'] += 1000
        print(f"Index: {index}, Age: {row['Age']}, Income: {row['Income']}")
for tup in df.itertuples():
        df.at[tup.Index, 'Income'] += 1000 # Change value directly in the DataFrame using at[] 
       print(f “Index: {tup.Index}, Age: {tup.Age}, Income: {df.loc[tup.Index, 'Income']}”)
# Both loops have the same output
python
Go to Main Menu