0Pricing
Python Academy · Lekcja

Scalanie, łączenie i czyszczenie danych

Proszę łączyć obiekty DataFrame i profesjonalnie obsługiwać brakujące wartości.

Scalanie, łączenie i czyszczenie danych to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 4 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 Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

pd.merge

pd.merge(left, right, on="key") łączy dwa obiekty DataFrame na podstawie wspólnej kolumny — podobnie jak JOIN w SQL.

import pandas as pd

users = pd.DataFrame({"id":[1,2,3],"name":["A","B","C"]})
orders = pd.DataFrame({"user_id":[1,1,2],"amount":[100,50,200]})
result = pd.merge(users, orders, left_on="id", right_on="user_id")
print(result)

Typy złączeń

Parametr how="inner" (domyślny), "left", "right" lub "outer" określa, które wiersze zostaną zachowane.

import pandas as pd

A = pd.DataFrame({"key":["a","b","c"],"val":[1,2,3]})
B = pd.DataFrame({"key":["b","c","d"],"x":[10,20,30]})

print(pd.merge(A, B, on="key", how="left"))   # all of A
print(pd.merge(A, B, on="key", how="outer"))  # all rows

df.join

df.join(other) wykonuje złączenie na podstawie indeksu. Jest szybsze i prostsze, gdy złączenie odbywa się po indeksie, a nie po kolumnie.

import pandas as pd

df1 = pd.DataFrame({"a":[1,2]}, index=["x","y"])
df2 = pd.DataFrame({"b":[3,4]}, index=["x","y"])
print(df1.join(df2))
# x: a=1 b=3
# y: a=2 b=4

concat

pd.concat([df1, df2]) układa obiekty DataFrame pionowo (axis=0) lub poziomo (axis=1).

import pandas as pd

df1 = pd.DataFrame({"a":[1,2]})
df2 = pd.DataFrame({"a":[3,4]})
print(pd.concat([df1,df2], ignore_index=True))
# a: 1 2 3 4

# Horizontal:
df3 = pd.DataFrame({"b":[5,6]})
print(pd.concat([df1,df3], axis=1))

Obsługa brakujących wartości

Wartości NaN można wykrywać za pomocą isna()/notna(). Do ich uzupełniania służy fillna(), a do usuwania — dropna().

import pandas as pd, numpy as np

df = pd.DataFrame({"a":[1,np.nan,3],"b":[np.nan,2,3]})
print(df.isna().sum())      # count nulls per column
df["a"] = df["a"].fillna(0)
df = df.dropna()            # drop rows with any null

Strategie fillna

Brakujące wartości można zastąpić stałą, uzupełnić w przód (ffill), uzupełnić wstecz (bfill) albo zastąpić średnią kolumny.

import pandas as pd, numpy as np

df = pd.DataFrame({"val":[1, np.nan, np.nan, 4]})
print(df["val"].ffill())   # forward fill: 1 1 1 4
print(df["val"].bfill())   # back fill:    1 4 4 4
print(df["val"].fillna(df["val"].mean()))   # fill with mean

Zmiana typów danych

Do konwertowania typów kolumn służy astype(). Do analizowania dat służy pd.to_datetime(), a do bezpiecznej konwersji na wartości liczbowe — pd.to_numeric z parametrem errors="coerce".

import pandas as pd

df = pd.DataFrame({"age":["25","30","35"],"date":["2024-01-01","2024-06-15","2024-12-31"]})
df["age"] = df["age"].astype(int)
df["date"] = pd.to_datetime(df["date"])
print(df.dtypes)

Czyszczenie tekstu

Akcesor .str biblioteki Pandas udostępnia zwektoryzowane operacje na tekstach: strip(), lower(), replace() i extract().

import pandas as pd

df = pd.DataFrame({"name":["  Alice  "," bob","CAROL"]})
df["clean"] = df["name"].str.strip().str.title()
print(df["clean"])   # Alice / Bob / Carol

Zmiana nazw i kolejności kolumn

Nazwy można zmieniać za pomocą df.rename(columns={"old":"new"}). Kolejność można zmienić, indeksując obiekt za pomocą listy.

import pandas as pd

df = pd.DataFrame({"a":[1],"b":[2],"c":[3]})
df = df.rename(columns={"a":"alpha","b":"beta"})
df = df[["c","beta","alpha"]]   # reorder
print(df.columns.tolist())      # ['c', 'beta', 'alpha']

Wykrywanie duplikatów

Duplikaty można znaleźć za pomocą duplicated(), a usunąć za pomocą drop_duplicates().

import pandas as pd

df = pd.DataFrame({"id":[1,2,1,3],"val":["a","b","a","c"]})
print(df.duplicated())           # [F F T F]
print(df[df.duplicated()])       # show duplicates
clean = df.drop_duplicates(subset=["id"])

apply do przekształceń wierszy i kolumn

df.apply(func, axis=1) stosuje funkcję do każdego wiersza. axis=0 stosuje ją do każdej kolumny.

import pandas as pd

df = pd.DataFrame({"a":[1,2,3],"b":[4,5,6]})
# New column = row sum:
df["total"] = df.apply(lambda row: row["a"] + row["b"], axis=1)
print(df)

Szybkie sprawdzenie

Co robi df.fillna(method="ffill")?

Podsumowanie

pd.merge służy do złączeń w stylu SQL, a pd.concat do układania danych. Wartości NaN należy obsługiwać za pomocą isna(), fillna() i dropna(). Tekst można czyścić za pomocą akcesora .str. Typy można konwertować za pomocą astype() i pd.to_datetime().

Często zadawane pytania

Czy lekcja „Scalanie, łączenie i czyszczenie danych” jest bezpłatna?

Tak — pełny tekst „Scalanie, łączenie i czyszczenie danych” 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 Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Scalanie, łączenie i czyszczenie danych”?

Proszę łączyć obiekty DataFrame i profesjonalnie obsługiwać brakujące wartości. Ćwiczysz Python 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ąć Python Academy?

Nie wymagamy żadnego doświadczenia. Python 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 4 z 4.

Ile czasu zajmuje lekcja „Scalanie, łączenie i czyszczenie danych”?

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 Python Academy?

Tak. Każda lekcja Python 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. Podstawy Series i DataFrame
  2. Indeksowanie, filtrowanie i maski logiczne
  3. GroupBy, agregacja i tabele przestawne
  4. Scalanie, łączenie i czyszczenie danych
← Powrót do Python Academy