Podstawy Pythona (w zakresie potrzebnym do ML)

Poznaj podstawy języka Python niezbędne w pracy z machine learningiem – od struktur danych po pierwszy model ML ze scikit-learn.
15 kwietnia 2025
blog
Poziom: Podstawowy

Artykuł przeznaczony dla osób początkujących w Pythonie i uczeniu maszynowym, które chcą poznać podstawy pracy z danymi oraz stworzyć pierwszy model w scikit-learn.

Z tego artykułu dowiesz się

  • Jaką rolę pełni Python w workflow machine learningu i jakie biblioteki są w nim kluczowe?
  • Jak używać podstawowych elementów języka (struktury danych, funkcje, pętle i instrukcje warunkowe) do pracy z danymi?
  • Jak wykonać pierwsze kroki z NumPy, pandas i scikit-learn, aby przygotować dane i zbudować pierwszy model ML?

Wprowadzenie do Pythona i jego roli w machine learningu

Python to jeden z najpopularniejszych języków programowania na świecie, który zdobył ogromne uznanie w środowisku nauki o danych i machine learningu (ML). Jego czytelna składnia, wsparcie społeczności oraz bogaty ekosystem bibliotek sprawiają, że jest idealnym wyborem zarówno dla początkujących, jak i zaawansowanych użytkowników pracujących z danymi i modelami uczącymi się na ich podstawie.

W kontekście machine learningu, Python pełni rolę głównego narzędzia do:

  • przygotowania i przetwarzania danych,
  • tworzenia i trenowania modeli ML,
  • analizy wyników i wizualizacji,
  • budowania i wdrażania aplikacji opartych na danych.

Język ten jest często wybierany ze względu na dostępność bibliotek takich jak NumPy (do obliczeń numerycznych), pandas (do pracy z danymi tabelarycznymi), scikit-learn (do klasycznego ML), czy TensorFlow i PyTorch (do deep learningu). Dzięki temu Python umożliwia pełny przepływ pracy – od surowych danych po gotową aplikację.

Co więcej, Python charakteryzuje się dużą elastycznością – można pisać w nim zarówno krótkie skrypty, jak i rozbudowane systemy. Osoby uczące się ML często zaczynają od prostych przykładów, takich jak klasyfikacja czy regresja, a następnie przechodzą do bardziej złożonych projektów wykorzystujących sieci neuronowe.

Dla przykładu, za pomocą kilku linii kodu można załadować dane, wytrenować prosty model i ocenić jego skuteczność:

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)

Dzięki prostocie i szerokiemu zastosowaniu, Python stał się językiem pierwszego wyboru dla wielu osób rozpoczynających przygodę z machine learningiem.

Podstawowe struktury danych: listy, słowniki i zbiory

Python oferuje kilka wbudowanych struktur danych, które są niezbędne w pracy z danymi, a więc również w machine learningu. Do najczęściej wykorzystywanych należą: listy, słowniki oraz zbiory. Każda z tych struktur ma swoje unikalne cechy i zastosowania, które warto poznać, aby efektywnie zarządzać danymi i organizować kod.

  • Listy (lists) to uporządkowane kolekcje elementów, które mogą zawierać dane różnych typów. Są modyfikowalne, co oznacza, że można łatwo dodawać, usuwać lub zmieniać ich zawartość. Listy świetnie nadają się do przechowywania sekwencji danych, np. listy wartości cech lub wyników predykcji.
  • Słowniki (dictionaries) to kolekcje par klucz-wartość, które pozwalają na szybki dostęp do danych za pomocą unikalnych kluczy. Są szczególnie przydatne, gdy dane mają strukturę opisową, na przykład: nazwa cechy → wartość cechy.
  • Zbiory (sets) to kolekcje unikalnych elementów, które nie są uporządkowane. Wykorzystuje się je m.in. do eliminowania duplikatów lub wykonywania operacji matematycznych, takich jak suma, przecięcie czy różnica zbiorów.

Dla przykładu, poniżej znajduje się prosty fragment kodu ukazujący, jak można stworzyć i używać każdej z tych struktur:

# Lista z liczbami
cechy = [3.5, 2.1, 4.8]

# Słownik z nazwami i wartościami cech
dane = {'długość': 3.5, 'szerokość': 2.1}

# Zbiór unikalnych etykiet
etykiety = {'kot', 'pies', 'mysz'}

Wybór właściwej struktury danych wpływa na przejrzystość i efektywność kodu, a także ułatwia późniejsze operacje, takie jak filtrowanie, przeszukiwanie czy agregacja danych.

Tworzenie i używanie funkcji w Pythonie

Funkcje są podstawowym narzędziem organizacji kodu w Pythonie. Umożliwiają wielokrotne wykorzystywanie fragmentów logiki, poprawiają czytelność i ułatwiają pracę nad większymi projektami, w tym projektami machine learningowymi.

W Pythonie funkcje definiuje się za pomocą słowa kluczowego def, a ich wywołanie następuje poprzez podanie nazwy funkcji oraz argumentów w nawiasach.

def przywitaj(imie):
    print(f"Cześć, {imie}!")

przywitaj("Anna")  # Wyjście: Cześć, Anna!

Funkcje mogą:

  • przyjmować dane wejściowe (parametry),
  • zwracać wartości za pomocą return,
  • nie zwracać niczego i służyć jedynie do wykonania określonej akcji.

Oto proste porównanie dwóch funkcji:

Rodzaj funkcji Opis Przykład
Bez zwracania wartości Wykonuje akcję (np. wypisuje tekst) def pokaz(): print("Hello")
Zwracająca wartość Przetwarza dane i zwraca wynik def dodaj(a, b): return a + b

W kontekście machine learningu funkcje są wykorzystywane m.in. do przetwarzania danych, obliczeń matematycznych, tworzenia modeli czy ewaluacji wyników.

Warto również wiedzieć, że w Pythonie funkcje są obiektami pierwszej klasy, co oznacza, że można je przypisywać do zmiennych, przekazywać jako argumenty do innych funkcji i zwracać jako wynik działania funkcji. Ten elastyczny mechanizm będzie szczególnie przydatny w bardziej zaawansowanych zastosowaniach. Jeśli chcesz jeszcze lepiej opanować te zagadnienia w praktyce, sprawdź nasze szkolenie Podstawy Pythona (w zakresie potrzebnym do ML).

Pętle i instrukcje warunkowe – sterowanie przepływem programu

W programowaniu, a szczególnie w kontekście machine learningu, istotne jest umiejętne sterowanie przepływem wykonywania kodu. Python oferuje intuicyjne mechanizmy do podejmowania decyzji (instrukcje warunkowe) oraz do wielokrotnego wykonywania fragmentów kodu (pętle). Dzięki nim możemy w prosty sposób analizować dane, iterować po strukturach i reagować na różne sytuacje.

Instrukcje warunkowe

Instrukcje warunkowe pozwalają na wykonywanie różnych fragmentów kodu w zależności od spełnienia określonych warunków logicznych. Python wykorzystuje konstrukcje if, elif (else if) i else.

value = 10
if value > 0:
    print("Liczba dodatnia")
elif value == 0:
    print("Zero")
else:
    print("Liczba ujemna")

Tego typu logika bywa przydatna np. przy ocenie warunków dla modelu, sprawdzaniu brakujących danych czy decydowaniu o dalszych krokach przetwarzania.

Pętle

Pętle umożliwiają powtarzanie tej samej operacji wiele razy, co jest szczególnie przydatne przy analizie zbiorów danych, przetwarzaniu elementów list czy iteracyjnym uczeniu modeli.

  • for – służy do iterowania po elementach sekwencji (np. listy, zbioru, słownika):
features = ["wiek", "waga", "wzrost"]
for f in features:
    print(f)
  • while – powtarza blok kodu dopóki dany warunek jest spełniony:
i = 0
while i < 5:
    print(i)
    i += 1

Porównanie

Element Opis Zastosowanie
if / elif / else Decyzje warunkowe Sprawdzanie warunków logicznych
for Iteracja po sekwencji Przeglądanie danych, kolumn, modeli
while Powtarzanie dopóki warunek Uczenie iteracyjne, monitoring

Umiejętne wykorzystanie instrukcji warunkowych i pętli pozwala kontrolować logikę programu, automatyzować powtarzalne zadania oraz efektywnie pracować z danymi.

5. Importowanie bibliotek i organizacja kodu

Python swoją popularność w świecie machine learningu zawdzięcza w dużej mierze ogromnej liczbie dostępnych bibliotek. Aby korzystać z ich funkcji, należy je najpierw zaimportować do naszego programu. W tej sekcji przedstawimy podstawowe zasady importowania oraz dobre praktyki organizowania kodu, które ułatwiają pracę nad projektami związanymi z uczeniem maszynowym. Jeśli chcesz jeszcze lepiej opanować te zagadnienia w praktyce, sprawdź nasze szkolenie Podstawy Pythona (w zakresie potrzebnym do ML).

Importowanie bibliotek

Importowanie to proces wczytywania zewnętrznych lub standardowych modułów do programu. W Pythonie istnieje kilka sposobów na importowanie:

# importowanie całej biblioteki
import math

# importowanie z aliasem
import pandas as pd

# importowanie konkretnej funkcji
from math import sqrt

Stosowanie aliasów (np. import numpy as np) to powszechna praktyka, która upraszcza kod i zwiększa jego czytelność.

Najczęściej używane biblioteki w ML

Biblioteka Zastosowanie
numpy Operacje na tablicach i obliczenia numeryczne
pandas Analiza i przetwarzanie danych tabelarycznych
matplotlib Tworzenie wykresów i wizualizacja danych
scikit-learn Gotowe algorytmy uczenia maszynowego

Organizacja kodu

Dobrze zorganizowany kod zwiększa jego czytelność i ułatwia współpracę zespołową. Oto kilka dobrych praktyk:

  • Struktura folderów: oddziel dane, modele, funkcje pomocnicze i notatniki w osobnych folderach.
  • Użycie modułów: jeśli projekt robi się większy, warto rozdzielić kod na pliki i zaimportować je jako własne moduły.
  • Konwencje nazewnicze: przestrzeganie stylu PEP8 (np. snake_case dla nazw funkcji) poprawia spójność kodu.
  • Sekcja importów: wszystkie importy umieszczaj na początku pliku, w kolejności: standardowe biblioteki, biblioteki zewnętrzne, własne moduły.
# Przykład dobrej organizacji importu
import os
import sys

import numpy as np
import pandas as pd

from utils.preprocess import clean_data

Takie podejście sprawia, że kod jest bardziej przejrzysty i łatwiejszy w utrzymaniu. Więcej takich dobrych praktyk poznasz podczas szkolenia Podstawy Pythona (w zakresie potrzebnym do ML).

Wprowadzenie do NumPy – operacje na tablicach

NumPy (skrót od Numerical Python) to jedna z kluczowych bibliotek wykorzystywanych w projektach związanych z machine learningiem. Umożliwia szybkie i efektywne wykonywanie operacji matematycznych na dużych zbiorach danych dzięki zastosowaniu struktur zwanych tablicami (ang. arrays), które są bardziej wydajne niż standardowe listy Pythona.

Jedną z głównych różnic między tablicami NumPy a typowymi listami Pythona jest ich jednorodność typów danych i optymalizacja pod kątem wydajności. NumPy umożliwia pracę z wielowymiarowymi tablicami, co jest szczególnie przydatne w kontekście danych numerycznych, obrazów, wektorów cech czy macierzy wag w sieciach neuronowych.

Cecha Listy Pythona Tablice NumPy
Typy danych Dowolne typy w jednej liście Wszystkie elementy tego samego typu
Wydajność Wolniejsze dla dużych danych Bardzo szybkie dzięki implementacji w C
Obsługa operacji matematycznych Trzeba pisać pętle Operacje wektorowe bez pętli
Wielowymiarowość Trudne do zaimplementowania Wsparcie dla macierzy n-wymiarowych

Oto prosty przykład pokazujący różnicę w sposobie dodawania dwóch struktur danych:

# Lista Pythona
a = [1, 2, 3]
b = [4, 5, 6]
c = [a[i] + b[i] for i in range(len(a))]  # [5, 7, 9]

# Tablica NumPy
import numpy as np
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
z = x + y  # array([5, 7, 9])

Dzięki NumPy nie tylko upraszczamy kod, ale również znacznie przyspieszamy jego działanie, zwłaszcza przy operacjach na dużych zbiorach danych. Biblioteka ta stanowi fundament dla wielu innych narzędzi używanych w machine learningu, takich jak pandas, scikit-learn czy TensorFlow.

W kontekście ML, NumPy pozwala m.in. na:

  • przechowywanie cech w formie macierzy,
  • szybkie przekształcenia danych wejściowych,
  • wektorowe obliczenia i operacje na dużych zestawach danych,
  • tworzenie i manipulowanie tensorami (np. w sieciach neuronowych).

Znajomość podstawowych operacji na tablicach NumPy to istotny krok w kierunku efektywnej pracy z danymi w Pythonie.

💡 Pro tip: Zamiast pętli stosuj wektoryzację i broadcastowanie oraz kontroluj wymiary tablic przez .shape; wybieraj właściwy dtype (np. float32), aby ograniczyć zużycie pamięci i przyspieszyć obliczenia.

Praca z danymi za pomocą pandas

W analizie danych i uczeniu maszynowym niezwykle istotne jest efektywne przetwarzanie, organizowanie i eksplorowanie zbiorów danych. Biblioteka pandas to jedno z podstawowych narzędzi w Pythonie, które zostało zaprojektowane właśnie z myślą o tych zadaniach. Umożliwia wygodne operowanie na danych tabelarycznych, podobnie jak arkusze kalkulacyjne czy ramki danych w języku R.

Podstawowymi strukturami danych w pandas są:

  • Series – jednokolumnowy wektor danych z indeksem, przypominający listę lub kolumnę w tabeli.
  • DataFrame – dwuwymiarowa struktura danych, przypominająca tabelę, gdzie dane są zorganizowane w kolumny i wiersze z etykietami.

pandas pozwala na szybkie wczytywanie danych z plików (np. CSV), filtrowanie, sortowanie, grupowanie oraz operacje statystyczne. Przykładowo, aby załadować dane z pliku i wyświetlić pierwsze wiersze, można użyć:

import pandas as pd

df = pd.read_csv("dane.csv")
print(df.head())

Dzięki prostemu i czytelnemu interfejsowi, pandas stał się standardem pracy z danymi w środowisku Pythona. Pozwala nie tylko na analizę danych, ale również na ich przygotowanie do trenowania modeli ML, np. czyszczenie, uzupełnianie braków czy kodowanie wartości kategorycznych. Jego integracja z bibliotekami takimi jak NumPy, scikit-learn czy matplotlib czyni go nieodzownym elementem workflow każdego data scientisty.

💡 Pro tip: Przy wczytywaniu CSV podaj dtype, parse_dates i usecols, aby oszczędzić pamięć i przyspieszyć I/O; do modyfikacji danych używaj .loc, aby uniknąć SettingWithCopyWarning.

Podstawowe operacje w scikit-learn – pierwszy model ML

Scikit-learn to jedna z najpopularniejszych bibliotek Pythona do uczenia maszynowego. Zawiera szereg narzędzi do budowy i oceny modeli ML, w tym gotowe algorytmy, narzędzia do przetwarzania danych, selekcji cech i walidacji modeli. Dzięki spójnej strukturze API jest przyjazna zarówno dla początkujących, jak i zaawansowanych użytkowników.

Typowy przepływ pracy w scikit-learn obejmuje kilka kluczowych etapów, które ilustrują, jak w praktyce buduje się pierwszy model ML:

  • Wczytanie danych: Można korzystać z wbudowanych zbiorów danych (np. iris, digits) lub ładować dane z zewnętrznych źródeł.
  • Podział danych: Dane dzieli się zazwyczaj na zbiór treningowy i testowy, co pozwala ocenić model na nieznanych danych.
  • Wybór modelu: Scikit-learn oferuje szereg gotowych algorytmów, takich jak regresja liniowa, drzewa decyzyjne, lasy losowe czy maszyny wektorów nośnych.
  • Uczenie modelu: Model uczony jest za pomocą metody fit() na danych treningowych.
  • Predykcja: Po nauczeniu modelu, można go użyć do przewidywania wyników dla nowych danych przy pomocy metody predict().
  • Ewaluacja: Skuteczność modelu mierzy się za pomocą metryk, takich jak dokładność, precyzja czy średni błąd kwadratowy – w zależności od rodzaju zadania (klasyfikacja vs regresja).

Poniższy przykład ilustruje uproszczony proces budowy pierwszego modelu klasyfikacyjnego na zbiorze iris z wykorzystaniem regresji logistycznej:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = LogisticRegression()
model.fit(X_train, y_train)

predictions = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, predictions))

To tylko punkt wyjścia – scikit-learn pozwala na dużo więcej, w tym dostrajanie hiperparametrów, tworzenie potoków przetwarzania danych oraz korzystanie z zaawansowanych technik walidacji krzyżowej.

💡 Pro tip: Ustaw random_state i użyj stratify=y w train_test_split, by mieć powtarzalne i zbalansowane podziały; w modelach liniowych dodaj StandardScaler w Pipeline, aby uniknąć problemów z zbieżnością i często poprawić wyniki.
icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments