Finanse
12.08.2025

Napisz skrypt w Pythonie do analizy pliku CSV z wyciągiem bankowym

Pythonanaliza finansowakategoryzacja transakcji
Dane wejściowe:
Ścieżka do pliku CSV z wyciągiem bankowym:
Format daty w pliku CSV:
Separator używany w pliku:
Nazwy kolumn w pliku CSV:
Waluta transakcji:
Okres analizy:
Kategorie wydatków do przypisania:

Kontekst i założenia projektu

Jesteś doświadczonym programistą Python z wieloletnią praktyką w analizie danych finansowych, tworzeniu skryptów automatyzujących procesy biznesowe oraz implementacji rozwiązań do zarządzania finansami osobistymi. Znasz dogłębnie biblioteki pandas, numpy, matplotlib, seaborn oraz najlepsze praktyki programowania w Pythonie. Twój kod jest zawsze czytelny, wydajny, dobrze udokumentowany i zabezpieczony przed typowymi błędami.


Cel główny

Stwórz kompleksowy, modularny skrypt w Pythonie do profesjonalnej analizy plików CSV zawierających wyciągi bankowe. Skrypt powinien być:

  • Uniwersalny - obsługujący różne formaty wyciągów bankowych
  • Bezpieczny - z walidacją danych i obsługą błędów
  • Wydajny - optymalizowany do pracy z dużymi zbiorami danych
  • Rozszerzalny - z możliwością łatwego dodawania nowych funkcjonalności
  • Interaktywny - z opcjami konfiguracji przez użytkownika

Struktura skryptu - moduły podstawowe

1. Moduł wczytywania i walidacji danych

Implementuj funkcje do:

  • Automatycznej detekcji kodowania pliku (UTF-8, ISO-8859-1, Windows-1250)
  • Inteligentnego rozpoznawania struktury CSV (separatory, nagłówki)
  • Walidacji kompletności danych (sprawdzanie brakujących wartości)
  • Standaryzacji formatów dat i liczb
  • Obsługi różnych formatów kwot (z przecinkiem/kropką, ze znakami waluty)
  • Utworzenia kopii zapasowej oryginalnych danych

2. Moduł czyszczenia i preprocessingu

Zaprogramuj mechanizmy do:

  • Usuwania duplikatów transakcji
  • Normalizacji opisów transakcji (usuwanie zbędnych znaków, ujednolicanie)
  • Konwersji walut (jeśli występują różne waluty)
  • Uzupełniania brakujących danych metodami interpolacji
  • Identyfikacji i oznaczania transakcji nietypowych (outliers)

3. Moduł kategoryzacji transakcji

Stwórz system automatycznej kategoryzacji oparty na:

  • Słowach kluczowych w opisach transakcji
  • Wzorcach wyrażeń regularnych (regex)
  • Kwotach transakcji (przedziały)
  • Machine Learning (opcjonalnie: naive Bayes, decision trees)
  • Możliwości ręcznego przypisywania kategorii z zapisem reguł

Funkcjonalności analityczne

4. Analiza podstawowa

Zaimplementuj obliczenia:

  • Statystyki opisowe: suma przychodów/wydatków, średnia transakcja, mediana, odchylenie standardowe
  • Bilans miesięczny/tygodniowy/dzienny: przepływy pieniężne w czasie
  • Top 10 największych wydatków i przychodów
  • Częstotliwość transakcji: liczba transakcji dziennie/tygodniowo
  • Analiza salda: minimum, maksimum, trend

5. Analiza zaawansowana

Dodaj funkcje do:

  • Analizy trendów: regresja liniowa wydatków/przychodów
  • Sezonowości: identyfikacja cyklicznych wzorców wydatków
  • Prognozowania: przewidywanie przyszłych wydatków (ARIMA, Prophet)
  • Analizy korelacji: zależności między kategoriami wydatków
  • Wykrywania anomalii: transakcje odbiegające od normy
  • Analizy cash flow: projekcja przepływów gotówkowych

6. Analiza według kategorii

Przeprowadź szczegółową analizę:

  • Udział procentowy każdej kategorii w wydatkach
  • Trend wydatków w każdej kategorii
  • Porównanie miesięczne/kwartalne kategorii
  • Identyfikacja kategorii rosnących/malejących
  • Analiza ABC (Pareto) wydatków

Wizualizacja danych

7. Moduł generowania wykresów

Stwórz interaktywne wizualizacje:

  • Wykres liniowy: trend salda w czasie
  • Wykres słupkowy: wydatki według kategorii
  • Wykres kołowy: struktura wydatków
  • Heatmapa: wydatki w układzie dzień/miesiąc
  • Wykres wodospadowy: przepływ gotówki
  • Dashboard: interaktywny panel z plotly/dash
  • Wykres Sankey: przepływ środków między kategoriami

Raportowanie i eksport

8. Moduł generowania raportów

Implementuj generowanie:

  • Raportu PDF: profesjonalny dokument z wykresami i tabelami
  • Raportu HTML: interaktywny raport do przeglądania w przeglądarce
  • Pliku Excel: arkusz z wieloma zakładkami i formatowaniem
  • Podsumowania tekstowego: kluczowe wnioski w formie bullet points
  • Alertów i rekomendacji: automatyczne sugestie oszczędności

Implementacja techniczna

9. Struktura kodu

# Główne biblioteki do wykorzystania
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime, timedelta
import re
import json
from pathlib import Path
import logging
from typing import Dict, List, Optional, Tuple
import warnings

10. Architektura aplikacji

Zastosuj wzorce projektowe:

  • MVC (Model-View-Controller) dla separacji logiki
  • Factory Pattern dla tworzenia różnych typów analiz
  • Strategy Pattern dla różnych metod kategoryzacji
  • Observer Pattern dla systemu powiadomień

11. Obsługa błędów i logowanie

Zaimplementuj:

  • Try-except bloki dla wszystkich operacji I/O
  • Własne klasy wyjątków dla specyficznych błędów
  • System logowania z różnymi poziomami (DEBUG, INFO, WARNING, ERROR)
  • Walidację danych wejściowych z informatywnymi komunikatami

Bezpieczeństwo i prywatność

12. Zabezpieczenia

Dodaj mechanizmy:

  • Szyfrowania wrażliwych danych (opcjonalnie)
  • Anonimizacji danych osobowych w raportach
  • Bezpiecznego przechowywania konfiguracji
  • Walidacji ścieżek plików (zapobieganie path traversal)
  • Limitów pamięci dla dużych plików

Konfiguracja i personalizacja

13. Plik konfiguracyjny

Stwórz system konfiguracji (JSON/YAML):

{
    "categories": {
        "Jedzenie": ["restauracja", "sklep spożywczy", "żabka"],
        "Transport": ["paliwo", "uber", "bilety"],
        "Rachunki": ["prąd", "gaz", "internet"]
    },
    "alerts": {
        "overspending_threshold": 5000,
        "low_balance_alert": 1000
    },
    "report_settings": {
        "currency": "PLN",
        "date_format": "DD-MM-YYYY"
    }
}

Przykłady użycia i dokumentacja

14. Dokumentacja kodu

Przygotuj:

  • Docstringi dla wszystkich funkcji i klas
  • README.md z instrukcją instalacji i użycia
  • Przykładowe pliki CSV do testów
  • Jupyter Notebook z tutorialem
  • Testy jednostkowe (pytest)

15. Interfejs użytkownika

Rozważ implementację:

  • CLI (Command Line Interface) z argparse
  • Prosty GUI z tkinter lub PyQt
  • Web interface z Flask/FastAPI
  • Integrację z Jupyter notebooks

Optymalizacja wydajności

16. Techniki optymalizacji

Zastosuj:

  • Chunking dla dużych plików CSV
  • Multiprocessing dla równoległego przetwarzania
  • Caching wyników pośrednich
  • Vectorized operations w pandas
  • Query optimization dla filtrowania danych

Integracje zewnętrzne

17. Możliwe rozszerzenia

Przygotuj kod do integracji z:

  • API banków (jeśli dostępne)
  • Google Sheets
  • Dropbox/Google Drive do automatycznego pobierania plików
  • Systemami powiadomień (email, Slack)
  • Bazami danych (SQLite, PostgreSQL)

Plan rozwoju i utrzymania

18. Roadmapa funkcjonalności

Zaplanuj przyszłe wersje:

  • v1.0: Podstawowa analiza i kategoryzacja
  • v1.5: Dodanie wizualizacji i raportów PDF
  • v2.0: Machine Learning dla kategoryzacji
  • v2.5: Web interface i API REST
  • v3.0: Aplikacja mobilna i synchronizacja chmurowa

Metryki sukcesu i KPI

19. Wskaźniki do monitorowania

Zdefiniuj metryki:

  • Dokładność kategoryzacji (% poprawnie przypisanych transakcji)
  • Czas przetwarzania pliku (ms/1000 transakcji)
  • Pokrycie testami jednostkowymi (target: >80%)
  • Liczba obsługiwanych formatów banków
  • Satysfakcja użytkownika (feedback score)

Podsumowanie i najlepsze praktyki

Tworzony skrypt powinien być:

  1. Modularny - łatwy do rozbudowy i modyfikacji
  2. Testowalny - z kompleksowymi testami jednostkowymi
  3. Dokumentowany - z jasną dokumentacją techniczną i użytkową
  4. Wydajny - zoptymalizowany do pracy z dużymi zbiorami danych
  5. Bezpieczny - z pełną obsługą błędów i walidacją danych
  6. Użyteczny - dostarczający realnej wartości w analizie finansów osobistych

Pamiętaj o stosowaniu konwencji PEP 8, type hints oraz tworzeniu kodu zgodnego z zasadami SOLID i DRY. Skrypt powinien być łatwy w instalacji (requirements.txt, setup.py) i uruchomieniu, z możliwością działania na różnych systemach operacyjnych.

8

Sprawdź również