Lekcja 13 · Warsztat
CSV: od pliku do wykresu
Surowa tabela w pliku, potem Excel albo matplotlib. Bez scalonych komórek i kolorów zamiast liczb.
Po tej lekcji
- Otwierasz CSV w arkuszu (średnik w polskim Excelu).
- W Pythonie czytasz wiersze i rysujesz wykres.
- Nie liczysz na kopii, która niszczy surowe dane.
Plik materialy/obecni.csv w podręczniku. To surowy dziennik: dzień i liczba obecnych. Pytanie: narysować obecność i nie zniszczyć oryginału, gdy dopiszemy procent.
Karta modelu: dane, założenia, parametry
| Wielkość | Symbol | Wartość | Jednostka | Skąd się wzięła | Rodzaj |
|---|---|---|---|---|---|
| Dzień | dzien | 1…5 | dzień | kolumna CSV | dana |
| Obecni | obecni | 28…29 | osoby | kolumna CSV | dana |
| Separator | — | średnik | — | polski Excel | założenie formatu |
| Procent frekwencji | — | obecni/32 | % | tylko w kopii pliku | wynik modelu, nie raw |
dzien;obecni 1;28 2;27 3;30 4;25 5;29
import csv
import matplotlib.pyplot as plt
def wczytaj_obecnych(sciezka):
dni, obecni = [], []
with open(sciezka, encoding="utf-8") as f:
reader = csv.DictReader(f, delimiter=";")
for row in reader:
dni.append(int(row["dzien"]))
obecni.append(int(row["obecni"]))
return dni, obecni
def wykres_obecnych(sciezka, tytul):
dni, obecni = wczytaj_obecnych(sciezka)
plt.plot(dni, obecni, marker="o")
plt.title(tytul)
plt.xlabel("Dzień")
plt.ylabel("Osoby")
plt.grid(True)
plt.show()
wykres_obecnych("obecni.csv", "Obecni — dane z CSV")
Sprawdź się. Dlaczego kolory i scalanie psują CSV?
Ćwiczenia samodzielne
- Otwórz obecni.csv w Excelu i zrób wykres.
- Uruchom skrypt Pythona (plik obok skryptu, ten sam folder).
- Dodaj szósty dzień 31 osób — w CSV, potem odśwież oba wykresy.
- Zapisz kopię obecni_model.csv i tylko w kopii dodaj kolumnę procentu. Surowe dane zostają.
Odpowiedzi (dopiero po samodzielnej pracy)
- Separator średnik.
- Jeśli FileNotFoundError: ustaw katalog roboczy.
- obie listy długości 6.
- Zasada: raw vs model.