
Kiedy uczymy się programowania, szczególnie Pythona, na początku wszystko wydaje się proste: kilka zmiennych, trochę operacji matematycznych, jakieś pierwsze printy. Ale prawdziwe „wejście na wyższy poziom” zaczyna się dopiero w momencie, w którym zaczynasz tworzyć własne funkcje i rozumieć, jak łączyć ze sobą różne elementy języka.
W tej lekcji — i w tym artykule — przeprowadzę Cię przez proces budowania dwóch funkcji. Jedna będzie wersją podstawową, pokazującą samą logikę operowania na danych. Druga będzie już wersją „PRO”: czytanie plików sprzedażowych, iterowanie po folderach, budowanie listy słowników, sumowanie danych i ogarnianie błędów, które naturalnie pojawiają się w takim procesie.
To jest dokładnie ten typ zadania, z którym spotykają się analitycy danych w realnych firmach. Nie jest to przykład typu „wyssany z palca”. To jest praktyka — i pokazanie, jak krok po kroku przechodzę od problemu do działającego rozwiązania.
Problem, który chcemy rozwiązać
Zaczniemy od sytuacji bardzo typowej w analizie danych: mamy dane sprzedażowe i chcemy policzyć, ile sprzedano danego produktu. W wersji „podstawowej” te dane są już przygotowane — lista słowników. W wersji bardziej zaawansowanej — dane znajdują się w kilku plikach tekstowych, w folderach. To oznacza:
- trzeba odczytać pliki,
- pominąć nagłówki,
- sparsować linijki,
- zamienić liczby zapisane jako tekst na liczby faktyczne,
- zbudować strukturę danych w Pythonie,
- i dopiero wtedy policzyć sprzedaż.
To wszystko będziemy robić — ale zaczniemy prosto.
Pierwsza funkcja: sumowanie sprzedaży z listy słowników
Wyobraź sobie, że mamy dane przygotowane w Pythonie:
sales_data = [
{"product": "Apple", "quantity": 50},
{"product": "Banana", "quantity": 24},
{"product": "Apple", "quantity": 65},
]
Chcę napisać funkcję, która:
- przyjmie powyższą listę,
- otrzyma nazwę produktu,
- i zwróci sumę sprzedanych sztuk danego produktu.
Czyli:
total_sales(sales_data, "Apple") → 115
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Tworzenie funkcji krok po kroku
Najpierw definiuję funkcję:
def total_sales(data, product):
Następnie tworzę zmienną, która będzie przechowywała sumę:
total = 0
Teraz przechodzę przez każdy słownik w liście:
for d in data:
I sprawdzam, czy produkt się zgadza:
if d["product"] == product:
total += d["quantity"]
Na koniec zwracam wartość:
return total
Całość wygląda tak:
def total_sales(data, product):
total = 0
for d in data:
if d["product"] == product:
total += d["quantity"]
return total
Wywołanie:
print(total_sales(sales_data, "Apple"))
Wynik:
115
I to jest ten moment, w którym większość początkujących mówi: „Kurczę, to jest łatwe”.
I mają rację — do momentu, kiedy dane są idealnie podane.
Wersja PRO: dane w folderach i plikach
W realnych projektach dane są chaotyczne. Są w plikach, często w kilku folderach, w różnych miesiącach, latach.
Załóżmy, że mamy strukturę:
data/
├── sales_january.txt
├── sales_february.txt
Każdy plik wygląda tak:
date,product,quantity
2023-01-01,Apple,50
2023-01-02,Banana,24
2023-01-03,Apple,65
...
Celem jest:
- Przejść po wszystkich plikach w folderze.
- Otworzyć każdy z nich.
- Pominąć nagłówek.
- Przekształcić każdą linię w słownik.
- Zebrać te słowniki do listy.
- Zsumować wartości dla wskazanego produktu.
Żeby to zrobić czysto, rozbijam to na dwie funkcje.
Funkcja 1: wczytywanie danych z pojedynczego pliku
Ta funkcja powinna:
- otworzyć plik,
- pominąć nagłówek,
- rozbić linie po przecinku,
- zamienić ilość na integer,
- zbudować listę słowników,
- zwrócić tę listę.
Kod:
def read_sales_data(filepath):
"""
Wczytuje plik sprzedażowy i zwraca listę słowników.
"""
sales_data = []
with open(filepath, "r") as file:
next(file) # pomijamy nagłówek
for line in file:
date, product, quantity = line.strip().split(",")
quantity = int(quantity) # konwersja tekstu na liczbę
sales_data.append({
"date": date,
"product": product.strip(),
"quantity": quantity
})
return sales_data
Ta jedna funkcja robi naprawdę dużo pracy — i jest bardzo uniwersalna.
Możesz ją wykorzystać nie tylko do analizy sprzedaży, ale właściwie do każdego typu plików CSV/TXT o podobnej strukturze.
Funkcja 2: sumowanie sprzedaży ze wszystkich plików w folderze
Teraz potrzebujemy funkcji, która:
- przejdzie po wszystkich plikach
.txt, - dla każdego pliku wywoła
read_sales_data, - będzie „dokładać” wartości quantity do sumy.
Kod:
import os
def total_sales_from_directory(directory, product):
total = 0
for file in os.listdir(directory):
if file.endswith(".txt"):
filepath = os.path.join(directory, file)
sales_data = read_sales_data(filepath)
for d in sales_data:
if d["product"] == product:
total += d["quantity"]
return total
Wywołanie:
print(total_sales_from_directory("data", "Apple"))
Załóżmy, że wynik to:
138
I to oznacza, że Python przeleciał przez wszystkie pliki, odczytał je, wyczyścił i zsumował wartości.
Proces debugowania — co było nie tak po drodze
W takiej pracy błędy to chleb powszedni. I dobrze.
Traktuję je jak naturalną część procesu — bo to właśnie błędy uczą nas najwięcej.
Podczas budowy funkcji można natknąć się na:
1. Literówki (np. „janurary” zamiast „january”)
Najbardziej klasyczny błąd.
Python Ci tego nie wybaczy — inaczej niż Excel.
2. Brak nawiasu w wywołaniu funkcji
To mnie nieustannie bawi, bo wszyscy myślą, że tylko początkujący robią takie błędy.
Nie. Wszyscy programiści.
3. Próba dodawania tekstu zamiast liczby
Np.:
"50" + "65" = "5065"
Czyli Python konkatenował tekst zamiast go sumować.
Rozwiązanie: quantity = int(quantity).
4. Brak import os
Typowy błąd przy pracy z folderami.
5. Nieprawidłowa ścieżka do pliku
Szczególnie gdy pliki są w podfolderach.
6. Nieprawidłowa obsługa nagłówka
Gdy nie użyjemy next(file), nagłówek może wywołać błąd parsowania.
Dodanie adnotacji typów i docstringów
To jest element, który odróżnia „skrypt uczniowski” od „kodu profesjonalnego”.
Python pozwala nam opisać funkcję:
- jakie typy przyjmuje,
- jaki typ zwraca.
Przykład:
def total_sales_from_directory(directory: str, product: str) -> int:
"""
Sumuje liczbę sprzedanych sztuk produktu z plików w podanym folderze.
"""
To już pachnie prawdziwym kodem produkcyjnym.
Jest:
- dokumentacja,
- czystość,
- przewidywalność,
- większa szansa uniknięcia błędów.
Dlaczego ta lekcja jest ważna?
To, co zrobiliśmy w tym artykule, to mini-projekt analityczny:
- praca z listami i słownikami,
- praca z plikami,
- praca z folderami,
- pętle, funkcje, warunki,
- modularność,
- typowanie i dokumentowanie,
- debugowanie,
- kontrolowanie struktury danych.
Tak wygląda 80% pracy analityka danych w Pythonie.
I dlatego ta lekcja tak dobrze przygotowuje do prawdziwej pracy.
Pokazuje proces — od danych surowych po konkretne wyniki biznesowe.
Zapisz się do
newslettera
🎁 i zgarnij darmowe bonusy:
Poradnik Początkującego Analityka
Video - jak szukać pracy w IT
Regularne dawki darmowej wiedzy, bez spamu
Zakończenie
W tej lekcji przeszedłem przez cały proces budowy funkcji analizujących dane sprzedażowe.
Od najprostszej wersji operującej na liście słowników aż po profesjonalne rozwiązanie czytające dane z wielu plików w folderach.
To dokładnie taka praca, jaką wykonuje analityk danych w codziennych projektach: czytanie surowych danych, czyszczenie ich, budowanie logiki funkcji i sumowanie wyników.
Jeśli ten artykuł był dla Ciebie pomocny, możesz śmiało udostępnić go dalej w swoich mediach społecznościowych. Dzięki temu więcej osób dowie się, jak w praktyce pracować z Pythonem w analizie danych.
Inne ciekawe artykuły:
- Jak działa CTE (WITH) w SQL? Najbardziej niedoceniana funkcja, która zmienia sposób pisania zapytań
- Jak działa FULL JOIN i SELF JOIN w SQL? Pełne wyjaśnienie na przykładach z życia analityka
- Jak sprawdzam poprawność danych w Excelu: praktyczna lekcja z ISNUMBER i AND
- KajoDataSpace: najlepsze miejsce, żeby naprawdę wejść w świat analizy danych
- Czekasz, aż poczujesz się gotowa do aplikowania? Ten moment może nie nadejść
Autorem artykułu jest Kajo Rudziński – analytical data architect, uznany ekspert w analizie danych, twórca KajoData oraz społeczności dla analityków KajoDataSpace.
To tyle w tym temacie. Analizujcie w pokoju!
Podobał Ci się ten artykuł 🙂?
Podziel się nim w Social Mediach 📱
>>> udostępnij go na LinkedIn i pokaż, że codziennie uczysz się czegoś nowego
>>> wrzuć go na Facebooka, to się może przydać któremuś z Twoich znajomych
>>> Przypnij sobie tą stronkę to zakładek, może się przydać w przyszłości
Wolisz oglądać 📺 niż czytać – nie ma problemu
>>> Obserwuj i oglądaj KajoData na YouTube




