2.4. pandas#
H pandas αποτελεί την πιο δημοφιλή βιβλιοθήκη της Python για την διαχείριση και επεξεργασία δεδομένων. Χαρακτηρίζεται για την φιλικότητα και ευελιξία της και είναι κατάλληλη για σύνολα δεδομένων μικρού ή μέτριου όγκου.
Η βασική κλάση της pandas είναι η DataFrame, η οποία αντιπροσωπεύει έναν δισδιάστατο πίνακα δεδομένων. Κατά αντιστοιχία με τα λογιστικά φύλλα οργανωμένων ο πίνακας αυτός είναι οργανωμένος σε στήλες με τίτλους και γραμμές με δείκτες. Οι στήλες του DataFrame αποτελούν αντικείμενα κλάσης DataSeries. Μπορούμε να δημιουργήσουμε ένα DataFrame από ένα λεξικό με πολλές λίστες και μπορούμε να αναφερθούμε σε μία στήλη είτε με τον τίτλο της (dataframe[“title”]), είτε με τον δείκτη της (dataframe.iloc([:,i]).
import pandas as pd
dataframe = pd.DataFrame({"year": [2022, 2023, 2024], "grade": [5.5, 6.5, 7]})
print(dataframe["grade"])
print(dataframe.iloc[:, 1])
0 5.5
1 6.5
2 7.0
Name: grade, dtype: float64
0 5.5
1 6.5
2 7.0
Name: grade, dtype: float64
Η pandas είναι χρήσιμη σε προβλήματα αριθμητικής ανάλυσης για την ανάγνωση και εγγραφή δεδομένων από/σε αρχεία. Για την ανάγνωση από αρχεία CSV χρήσιμη είναι η μέθοδος read_csv. Η read_csv δέχεται ως όρισμα την διαδρομή για ένα τοπικό αρχείο ή το URL για ένα διαδικτυακό και επιστρέφει ένα αντικείμενο DataFrame με τα περιεχόμενα του αρχείου. Σημειώνεται ότι η ανάγνωση αρχείων κειμένου μπορεί υπό προϋποθέσεις να γίνει ταχύτερα με τις συναρτήσεις της NumPy, παρόλα αυτά η ευελιξία και φιλικότητα της pandas συχνά επικρατεί ως κριτήριο επιλογής. Αντίστοιχες μέθοδοι διατίθενται για την ανάγνωση δεδομένων από αρχεία EXCEL, json, html, xml και βάσεις δεδομένων SQL μεταξύ άλλων. Επίσης χρήσιμη είναι η μέθοδος to_numpy για την μετατροπή των αριθμητικών δεδομένων ενός DataFrame ή μιας DataSeries στον τύπο πινάκων της NumPy.
Exercise 2.3
Στον σύνδεσμο
https://raw.githubusercontent.com/onoufrios/numan/refs/heads/main/assign/4/WLTP_class3.csv
έχει αναρτηθεί ένα αρχείο CSV με την χρονοσειρά του οδικού κύκλου WLTP. Εισάγετε τα δεδομένα σε πίνακες της NumPy και αναπαραστήστε τα σε γράφημα με την βιβλιοθήκη Matplotlib.
Solution to Exercise 2.3
import pandas as pd
import matplotlib.pyplot as plt
WLTP = pd.read_csv(
"https://raw.githubusercontent.com/onoufrios/numan/refs/heads/main/assign/4/WLTP_class3.csv"
)
print(WLTP)
t_wltp = WLTP["Time[s]"].to_numpy()
u_wltp = WLTP["Vehicle_speed[km/h]"].to_numpy()
print(t_wltp)
print(u_wltp)
fig, ax = plt.subplots()
ax.set(xlabel="Time[s]", ylabel="Vehicle speed [km/h]")
ax.plot(t_wltp, u_wltp, "-")
ax.grid()
plt.show()
Time[s] Vehicle_speed[km/h]
0 0 0.0
1 1 0.0
2 2 0.0
3 3 0.0
4 4 0.0
... ... ...
1796 1796 0.0
1797 1797 0.0
1798 1798 0.0
1799 1799 0.0
1800 1800 0.0
[1801 rows x 2 columns]
[ 0 1 2 ... 1798 1799 1800]
[0. 0. 0. ... 0. 0. 0.]
