Po co to?
- NumPy – szybkie liczenie na tablicach (zamiast pętli).
- pandas – praca na tabelach jak w Excelu, ale w Pythonie.
- matplotlib – rysowanie podstawowych wykresów.
Po tym odcinku policzysz średnie, posortujesz dane i zrobisz wykres bez bólu głowy.
1) Instalacja w 2 minuty
W terminalu:
pip install numpy pandas matplotlib
Na początek wystarczy zainstalować globalnie. Później poznasz wirtualne środowiska.
2) NumPy – szybkie liczenie na tablicach
Myśl o ndarray jak o „super-liście” liczb: szybka, jedna operacja działa na całą tablicę.
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([10, 10, 10, 10])
print(a + b) # [11 12 13 14]
print(a * 2) # [2 4 6 8]
print(a.mean()) # 2.5 (średnia)
print(a.shape) # (4,) – rozmiar
Tablica 2D (macierz):
M = np.array([[1, 2, 3],
[4, 5, 6]])
print(M.shape) # (2, 3)
print(M[0, 1]) # 2 (wiersz 0, kolumna 1)
print(M.sum(axis=0)) # suma kolumn -> [5 7 9]
Tipy NumPy:
- Licz na tablicach, nie w pętlach – będzie szybciej i czytelniej.
- Mieszanie typów zmieni całość na
float:np.array([1, 2, 3, 3.5])→ float.
3) pandas – tabele jak w Excelu, tylko programowalne
- Series = jedna kolumna.
- DataFrame = wiele kolumn (tabela).
import pandas as pd
df = pd.DataFrame({
"miasto": ["Gdańsk", "Warszawa", "Poznań", "Gdańsk"],
"sprzedaz": [120, 300, 180, 130],
"kategoria":["A", "B", "A", "B"]
})
print(df.head()) # pierwsze wiersze
print(df.info()) # typy kolumn
print(df.describe()) # statystyki liczb
Wybór i filtrowanie:
print(df["sprzedaz"]) # jedna kolumna (Series)
print(df[["miasto", "sprzedaz"]]) # kilka kolumn
wysoka = df[df["sprzedaz"] > 150] # filtr
print(wysoka)
Nowa kolumna i obliczenia:
df["sprzedaz_z_vat"] = df["sprzedaz"] * 1.23
Grupowanie i agregacje:
gr = df.groupby("miasto")["sprzedaz"].sum()
print(gr) # suma sprzedaży per miasto
top_kat = (df.groupby("kategoria")["sprzedaz"]
.mean()
.sort_values(ascending=False))
print(top_kat)
Braki danych (NaN):
df["rabat"] = [None, 0.1, None, 0.05]
print(df["rabat"].isna().sum()) # ile braków
df["rabat"] = df["rabat"].fillna(0)
CSV: zapis i odczyt:
df.to_csv("sprzedaz.csv", index=False)
df2 = pd.read_csv("sprzedaz.csv")
Modyfikacje rób przez loc (czytelnie i bez ostrzeżeń):
df.loc[df["miasto"] == "Gdańsk", "sprzedaz"] = df["sprzedaz"] + 10
4) matplotlib – szybkie wykresy
import matplotlib.pyplot as plt
# słupki: suma sprzedaży per miasto
by_city = df.groupby("miasto")["sprzedaz"].sum()
by_city.plot(kind="bar", title="Sprzedaż wg miast")
plt.xlabel("Miasto"); plt.ylabel("Sprzedaż")
plt.show()
# linia: przykładowa seria
import numpy as np
x = np.arange(0, 10)
y = x**2
plt.plot(x, y)
plt.title("y = x^2")
plt.show()
# histogram: rozkład sprzedaży
df["sprzedaz"].plot(kind="hist", bins=5, title="Rozkład sprzedaży")
plt.xlabel("Sprzedaż")
plt.show()
Tip: df.plot(...) pod spodem używa matplotlib – kod jest krótszy.
5) Mini-projekt: szybki raport sprzedaży
Cel: policzyć przychód (sprzedaz * cena), sprawdzić top kategorie i narysować wykres.
import pandas as pd
import matplotlib.pyplot as plt
dane = pd.DataFrame({
"kategoria": ["A","B","A","B","C","A","C","B"],
"sprzedaz": [10, 5, 7, 4, 6, 3, 8, 9],
"cena": [20, 30, 25, 10, 40, 25, 15, 12]
})
dane["przychod"] = dane["sprzedaz"] * dane["cena"]
raport = (dane.groupby("kategoria")[["sprzedaz","przychod"]]
.sum()
.sort_values("przychod", ascending=False))
print(raport)
raport["przychod"].plot(kind="bar", title="Przychód wg kategorii")
plt.ylabel("PLN")
plt.show()
6) Typowe potknięcia (i szybkie remedia)
- Chained indexing / SettingWithCopyWarning
Zamiastdf[df["x"]>0]["y"]=...→ użyjdf.loc[df["x"]>0, "y"] = ... - Złe typy po wczytaniu (liczby jako tekst)
df["kol"] = pd.to_numeric(df["kol"], errors="coerce")
lubread_csv(..., dtype=...) - Polskie znaki w CSV
Podawajencoding="utf-8"przyread_csv/to_csv. - Za dużo pamięci
Wybieraj kolumny (usecols), używaj kategorii:df["kol"] = df["kol"].astype("category"), liczby całkowite:Int32.
7) Ćwiczenia (zrób koniecznie)
- Mała tabela sprzedaży – DataFrame z kolumnami:
miasto, miesiac, sprzedaz.
Policz sumę sprzedaży dla każdego miasta i wskaż miasto z najwyższą sumą. - Premia warunkowa – dodaj kolumnę
premia = sprzedaz * 0.05tylko tam, gdziesprzedaz > 150(użyjloc). - Ceny i mediany – wczytaj (lub zbuduj)
kategoria, cena.
Policz medianę cen w kategoriach i narysuj słupki median. - Histogram – zrób histogram sprzedaży (10 koszyków) i dodaj tytuł i opisy osi.
- Udziały kategorii –
value_counts()nakategoriai wykres kołowy udziałów.
Co zabierasz z odcinka 13?
- NumPy do szybkich obliczeń na tablicach (bez pętli).
- pandas do wczytywania, filtrowania, grupowania i tworzenia nowych kolumn.
- matplotlib do prostych wykresów (słupki, linia, histogram).
- Zestaw praktycznych trików i ostrzeżeń, które oszczędzają czas.

