pandas

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.]
_images/b760d2e14b2c70efe2a063884fbb6fe2dd85689959cba3fe39833a61d5024dad.png