Na dzisiejszej lekcji skupimy się na analizie zmiennych kategorialnych, czyli tych, które reprezentują kategorie lub grupy danych. Poznamy również techniki radzenia sobie z brakującymi danymi, co jest kluczowym elementem w przygotowaniu danych do dalszej analizy.
Zmienne kategorialne reprezentują dane, które można podzielić na kategorie lub grupy. Przykładami są: płeć (mężczyzna, kobieta), wykształcenie (podstawowe, średnie, wyższe), kolor oczu (niebieski, brązowy, zielony).
Rozróżniamy dwa główne typy zmiennych kategorialnych:
Wizualizacja jest kluczowa do zrozumienia rozkładu zmiennych kategorialnych. Najpopularniejsze metody to:
matplotlib
lub seaborn
.import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
# Przykładowe dane (np. częstotliwość występowania koloru oczu)
data = {'Kolor_oczu': ['Niebieski', 'Brązowy', 'Zielony', 'Szary'], 'Liczba': [50, 75, 25, 10]}
df = pd.DataFrame(data)
# Wykres słupkowy
plt.figure(figsize=(8, 6))
sns.barplot(x='Kolor_oczu', y='Liczba', data=df)
plt.title('Rozkład Koloru Oczu')
plt.xlabel('Kolor Oczu')
plt.ylabel('Liczba osób')
plt.show()
import matplotlib.pyplot as plt
import pandas as pd
# Przykładowe dane (np. częstotliwość występowania koloru oczu)
data = {'Kolor_oczu': ['Niebieski', 'Brązowy', 'Zielony', 'Szary'], 'Liczba': [50, 75, 25, 10]}
df = pd.DataFrame(data)
# Wykres kołowy
plt.figure(figsize=(6, 6))
plt.pie(df['Liczba'], labels=df['Kolor_oczu'], autopct='%1.1f%%', startangle=140)
plt.title('Procentowy Rozkład Koloru Oczu')
plt.show()
Brakujące dane (missing data) występują wtedy, gdy w zbiorze danych brakuje wartości dla pewnych obserwacji. Mogą one prowadzić do błędnych wniosków i zakłócać analizę. Przyczyny brakujących danych mogą być różne: błędy podczas wprowadzania danych, brak odpowiedzi w ankietach, awaria czujników itp.
Identyfikacja brakujących danych jest pierwszym krokiem. Możemy to zrobić na wiele sposobów, np. używając metody isnull()
w bibliotece pandas
.
import pandas as pd
# Przykładowy DataFrame z brakującymi danymi
df = pd.DataFrame({'A': [1, 2, None, 4, 5], 'B': [None, 7, 8, 9, None]})
# Sprawdzenie brakujących danych
print(df.isnull())
# Suma brakujących wartości w każdej kolumnie
print(df.isnull().sum())
Istnieje wiele technik uzupełniania brakujących danych (imputacji). Wybór metody zależy od charakteru danych i celu analizy:
import pandas as pd
import numpy as np
# Przykładowy DataFrame
df = pd.DataFrame({'A': [1, 2, np.nan, 4, 5], 'B': [np.nan, 7, 8, 9, np.nan], 'C': ['A', 'B', np.nan, 'A', 'B']})
# Uzupełnianie średnią (kolumna A)
df['A'] = df['A'].fillna(df['A'].mean())
# Uzupełnianie modą (kolumna C)
df['C'] = df['C'].fillna(df['C'].mode()[0])
print(df)
Uzupełnianie wartością stałą: Przydatne, gdy chcemy wyraźnie zaznaczyć brakujące dane (np. wartością -999 lub 'Brak danych').
Imputacja oparta na modelach: Bardziej zaawansowane metody, takie jak użycie regresji do przewidywania brakujących wartości na podstawie innych zmiennych. Używane, gdy mamy wiele zmiennych wpływających na brakującą zmienną.
Explore advanced insights, examples, and bonus exercises to deepen understanding.
Witajcie! Dzisiaj zagłębimy się w temat zmiennych kategorialnych i brakujących danych, budując na tym, czego nauczyliśmy się na poprzednich zajęciach. Celem jest pogłębienie zrozumienia i nabycie bardziej zaawansowanych umiejętności w eksploracyjnej analizie danych (EDA).
Oprócz podstawowych wykresów słupkowych i kołowych, istnieją bardziej zaawansowane techniki wizualizacji dla zmiennych kategorialnych. Przyjrzyjmy się dwóm:
Brakujące dane: Pamiętajmy, że uzupełnianie brakujących danych to tylko część równania. Ważne jest również zrozumienie, dlaczego te dane brakuje. Czy jest to losowe braki (MCAR – Missing Completely at Random), braki zależne od innych zmiennych (MAR – Missing at Random) czy braki, które zależą od wartości brakujących (MNAR – Missing Not at Random)? Różne typy braków wymagają różnych podejść, czasem nawet bardziej zaawansowanych metod jak imputacja wielokrotna (multiple imputation).
Wypróbujmy kilka ćwiczeń, aby utrwalić zdobytą wiedzę:
Umiejętności, które nabywamy, mają szerokie zastosowanie w różnych dziedzinach. Oto kilka przykładów:
Spróbuj:
Jeśli chcesz pogłębić swoją wiedzę, rozważ:
Masz zestaw danych o klientach sklepu internetowego, zawierający kolumnę 'Kraj_pochodzenia'. Narysuj wykres słupkowy pokazujący rozkład krajów pochodzenia klientów. Użyj bibliotek `pandas` i `matplotlib` lub `seaborn`.
Wczytaj plik CSV (np. `dane_z_brakami.csv`) do DataFrame. Sprawdź i wyświetl, które kolumny mają brakujące dane, oraz ile brakujących wartości występuje w każdej kolumnie. Użyj metody `isnull()` i `sum()`.
Uzupełnij brakujące dane w kolumnach numerycznych DataFrame'a (np. użyj średniej), a w kolumnach kategorialnych (np. użyj mody). Następnie sprawdź, czy nadal istnieją brakujące dane (powinny być usunięte).
Wyobraź sobie, że jesteś analitykiem danych w dużej firmie e-commerce. Otrzymujesz dane o zamówieniach, w których brakuje informacji o wieku klientów (brak danych w kolumnie 'Wiek'). Twoim zadaniem jest zbadanie, czy wiek wpływa na wartość zamówienia. Musisz najpierw zidentyfikować brakujące dane w kolumnie 'Wiek' i zdecydować, jak je uzupełnić, zanim przystąpisz do analizy.
Przygotuj się na następną lekcję, gdzie przejdziemy do eksploracji zmiennych numerycznych i analizy zależności między zmiennymi.
We're automatically tracking your progress. Sign up for free to keep your learning paths forever and unlock advanced features like detailed analytics and personalized recommendations.