0Pricing
Pandas & NumPy Academy · Lekcja

Wczytywanie i audyt zbioru danych sprzedażowych

Zaimportuj plik CSV z rekordami zamówień, sprawdź typy danych i brakujące wartości oraz napraw analizowanie dat i anomalie ujemnych ilości.

Wczytywanie i audyt zbioru danych sprzedażowych to bezpłatna lekcja Pandas & NumPy Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Pandas & NumPy Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.

Wprowadzenie do zbioru danych dotyczących sprzedaży

Typowy zbiór danych dotyczących sprzedaży zawiera kolumny takie jak order_id, order_date, customer_id, product, category, quantity, unit_price i region. Przed rozpoczęciem analizy należy wczytać ten plik i wstępnie zapoznać się z jego strukturą. Celem tego pierwszego kroku jest zrozumienie, jakie dane są dostępne, zanim zostanie napisana choćby jedna formuła.

import pandas as pd

df = pd.read_csv('sales.csv')
print(df.shape)       # (rows, columns)
print(df.head())

Sprawdzanie kształtu i nazw kolumn

Po wczytaniu danych należy natychmiast sprawdzić df.shape, aby poznać wymiary zbioru danych, oraz df.columns, aby wyświetlić wszystkie nazwy kolumn. Potwierdza to poprawne wczytanie pliku i pokazuje, czy nazwy kolumn zawierają nieoczekiwane spacje lub wielkie litery wymagające uporządkowania. Niezgodna z oczekiwaniami liczba kolumn jest wczesnym sygnałem ostrzegawczym wskazującym na uszkodzenie pliku.

print('Rows, Cols:', df.shape)
print('Columns:', df.columns.tolist())
print('Index:', df.index[:5].tolist())

Sprawdzanie typów danych za pomocą dtypes

Użyj df.dtypes lub df.info(), aby sprawdzić rozpoznany typ danych każdej kolumny. Częste problemy to kolumny z datami wczytane jako object (łańcuchy znaków) oraz kolumny liczbowe wczytane jako object z powodu przypadkowych przecinków lub symboli walut. Wczesne wykrycie problemów z typami danych zapobiega późniejszym, niezauważalnym błędom w obliczeniach arytmetycznych.

print(df.dtypes)

# More detail including non-null counts
df.info()

Zliczanie brakujących wartości

Uruchom df.isna().sum(), aby zliczyć wartości NaN w każdej kolumnie. Procent brakujących wartości można obliczyć za pomocą df.isna().mean() * 100, aby sprawdzić, jaka część każdej kolumny nie zawiera danych. Kolumny, w których brakuje ponad 30–40%, zwykle wymagają podjęcia decyzji: usunąć kolumnę, uzupełnić brakujące wartości albo oznaczyć je jako osobną zmienną wskaźnikową.

missing = df.isna().sum()
missing_pct = df.isna().mean() * 100

print(pd.DataFrame({'count': missing, 'pct': missing_pct}))

Wykrywanie zduplikowanych wierszy

Zduplikowane rekordy zamówień zawyżają sumy przychodów i zniekształcają wszelkie analizy wykonywane na poziomie klienta. Użyj df.duplicated().sum(), aby zliczyć dokładne duplikaty, oraz df.duplicated(subset=['order_id']).sum(), aby sprawdzić powtarzające się identyfikatory zamówień, które powinny być unikalne. Wykrycie duplikatów podczas wczytywania danych pozwala zaoszczędzić wiele godzin późniejszego debugowania.

print('Exact duplicates:', df.duplicated().sum())
print('Duplicate order_ids:', df.duplicated(subset=['order_id']).sum())

# Preview the duplicated rows
print(df[df.duplicated(subset=['order_id'], keep=False)].head())

Naprawianie analizy kolumny z datami

Kolumnę z datami wczytaną jako object należy przekonwertować za pomocą pd.to_datetime(), aby móc wykonywać działania na datach. Jeśli format jest znany, należy przekazać format='%Y-%m-%d', a w przypadku mieszanych formatów można użyć infer_datetime_format=True. Po konwersji należy wyodrębnić rok i miesiąc za pomocą akcesora .dt, aby grupować dane według czasu.

df['order_date'] = pd.to_datetime(df['order_date'], format='%Y-%m-%d')

df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month

print(df[['order_date', 'year', 'month']].head())

Wykrywanie ujemnych ilości

Ujemne wartości quantity zazwyczaj oznaczają zwroty lub błędy przy wprowadzaniu danych. Można je znaleźć za pomocą indeksowania boolowskiego: df[df['quantity'] < 0]. Należy zdecydować, czy traktować je jako prawidłowe zwroty (zachować je i dodać oznaczenie), czy jako błędy (usunąć lub skorygować). Decyzję należy zawsze udokumentować, aby zapewnić powtarzalność potoku.

negatives = df[df['quantity'] < 0]
print(f'Negative quantity rows: {len(negatives)}')
print(negatives.head())

# Flag returns separately
df['is_return'] = df['quantity'] < 0

Sprawdzanie zakresów kolumn liczbowych

Użyj df.describe(), aby wyświetlić wartości minimalne i maksymalne, średnie oraz kwartyle wszystkich kolumn liczbowych. Wartość minimalna równa zero lub ujemna w kolumnie unit_price jest podejrzana. Maksymalna wartość quantity znacznie przekraczająca rozsądny rozmiar zamówienia może wskazywać na błąd przy wprowadzaniu danych. Sprawdzenie zakresów to szybki sposób na wykrywanie anomalii.

print(df[['quantity', 'unit_price']].describe())

# Any price exactly 0?
print('Zero price rows:', (df['unit_price'] == 0).sum())

Kontrola kolumn kategorialnych

W przypadku kolumn takich jak region i category użyj df['region'].value_counts(), aby wyświetlić wszystkie unikatowe wartości i częstość ich występowania. Poszukaj literówek, niespójnej wielkości liter (np. 'north' i 'North') oraz nieoczekiwanych wartości wskazujących na problemy z danymi źródłowymi. Ujednolić je przed wykonaniem jakiejkolwiek operacji groupby.

print(df['region'].value_counts())
print(df['category'].value_counts())

# Normalise capitalisation
df['region'] = df['region'].str.strip().str.title()

Tworzenie podsumowania audytu

Ustrukturyzowany DataFrame z podsumowaniem audytu ułatwia przekazywanie interesariuszom informacji o problemach z jakością danych. Utwórz go, zbierając w słowniku takie metryki jak liczba wierszy, liczba kolumn, liczba brakujących wartości i liczba duplikatów, a następnie konwertując słownik do DataFrame. To podsumowanie staje się pierwszą częścią raportu z analizy i uzasadnia każdy wykonany krok czyszczenia danych.

audit = {
    'rows': len(df),
    'columns': len(df.columns),
    'missing_cells': df.isna().sum().sum(),
    'duplicate_rows': df.duplicated().sum(),
    'date_range_start': df['order_date'].min(),
    'date_range_end': df['order_date'].max()
}

for k, v in audit.items():
    print(f'{k}: {v}')

Zapisywanie oczyszczonego wycinka danych

Po wstępnym audycie i podstawowych poprawkach (korekcie typów danych, usunięciu duplikatów i dodaniu kolumn znacznikowych) zapisz oczyszczony wycinek danych, aby kolejne kroki zawsze rozpoczynały się od spójnej wersji bazowej. Użyj df.to_csv('sales_clean.csv', index=False) lub, aby przyspieszyć ponowne wczytywanie, df.to_parquet('sales_clean.parquet'). Parquet zachowuje typy danych, w tym datetime, czego nie robi CSV.

# Drop exact duplicates before saving
df = df.drop_duplicates(subset=['order_id'], keep='first')

# Save clean snapshot
df.to_parquet('sales_clean.parquet', index=False)
print('Saved', len(df), 'rows to sales_clean.parquet')

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat analizy danych zdobytą w tej lekcji.

Podsumowanie lekcji

W tej lekcji nauczyli się Państwo: wczytywać plik CSV i sprawdzać jego kształt oraz kolumny, kontrolować typy danych, brakujące wartości, duplikaty i ujemne ilości oraz zapisywać oczyszczony wycinek danych na potrzeby kolejnych kroków. Następnie zajmiemy się obliczaniem przychodów i tworzeniem cech na podstawie oczyszczonego zbioru danych.

Często zadawane pytania

Czy lekcja „Wczytywanie i audyt zbioru danych sprzedażowych” jest bezpłatna?

Tak — pełny tekst „Wczytywanie i audyt zbioru danych sprzedażowych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Pandas & NumPy Academy, przejdź na CoddyKit PRO. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wczytywanie i audyt zbioru danych sprzedażowych”?

Zaimportuj plik CSV z rekordami zamówień, sprawdź typy danych i brakujące wartości oraz napraw analizowanie dat i anomalie ujemnych ilości. Ćwiczysz Pandas & NumPy Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Pandas & NumPy Academy?

Nie wymagamy żadnego doświadczenia. Pandas & NumPy Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Wczytywanie i audyt zbioru danych sprzedażowych”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Pandas & NumPy Academy?

Tak. Każda lekcja Pandas & NumPy Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wczytywanie i audyt zbioru danych sprzedażowych
  2. Obliczenia przychodu i inżynieria cech
  3. Analiza GroupBy według regionu i kategorii
  4. Wizualizacja trendów miesięcznych
← Powrót do Pandas & NumPy Academy