0Pricing
Pandas & NumPy Academy · Lekcja

Podstawowa inspekcja DataFrame

Używać metod head(), tail(), info(), describe() i atrybutu shape, aby szybko poznać zawartość i strukturę dowolnego obiektu DataFrame

Podstawowa inspekcja DataFrame to bezpłatna lekcja Pandas & NumPy 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 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.

Pierwsze pięć kroków z dowolnym obiektem DataFrame

Za każdym razem, gdy wczytujesz nowy zbiór danych, systematyczna sekwencja kontroli pozwala zaoszczędzić wiele godzin debugowania. Zestaw narzędzi Pandas obejmuje: head() do wyświetlania pierwszych wierszy, tail() do wyświetlania ostatnich wierszy, info() do sprawdzania typów kolumn i wartości null, describe() do uzyskiwania statystyk oraz shape do sprawdzania wymiarów. Wykonanie tych pięciu kontroli zajmuje mniej niż minutę i od razu ujawnia większość problemów z jakością danych.

import pandas as pd

# Assume df is loaded from a CSV
print(df.shape)   # (rows, cols)
df.head()         # first 5 rows
df.info()         # dtypes + non-null counts
df.describe()     # statistics

head() i tail()

df.head(n) zwraca pierwsze n wierszy (domyślnie 5) jako obiekt DataFrame. df.tail(n) zwraca ostatnie n wierszy. Razem pomagają sprawdzić, czy dane zostały poprawnie sparsowane — można zweryfikować, czy nazwy kolumn znajdują się w wierszu nagłówka, kolumny liczbowe zawierają liczby oraz czy ciągi dat nie zostały błędnie zinterpretowane. Operacje te nie modyfikują danych i zwracają nowe obiekty DataFrame.

import pandas as pd

df = pd.DataFrame({'a': range(20), 'b': range(20, 40)})
print(df.head(3))
#    a   b
# 0  0  20
# 1  1  21
# 2  2  22
print(df.tail(2))
#     a   b
# 18 18  38
# 19 19  39

info(): typy i liczby wartości innych niż null

df.info() wyświetla zwięzłe podsumowanie: typ danych indeksu, liczbę wartości innych niż null w każdej kolumnie, typ danych każdej kolumny oraz całkowite zużycie pamięci. Kolumny zawierające mniej wartości innych niż null niż wynosi całkowita liczba wierszy mają brakujące dane. Typ danych object często oznacza kolumnę tekstową (lub kolumnę zawierającą wartości różnych typów), która może wymagać oczyszczenia przed analizą.

import pandas as pd
import numpy as np

df = pd.DataFrame({'name': ['A', 'B', None],
                   'score': [80.0, np.nan, 90.0],
                   'grade': ['A', 'C', 'A']})
df.info()
# Column  Non-Null Count  Dtype
# name    2 non-null      object
# score   2 non-null      float64
# grade   3 non-null      object

describe(): podsumowanie statystyczne

df.describe() oblicza dla wszystkich kolumn liczbowych liczbę wartości, średnią, odchylenie standardowe, minimum, 25. percentyl, 50. percentyl (medianę), 75. percentyl i maksimum. Przekaż include='all', aby uwzględnić również kolumny typu object (tekstowe). Przekaż include='object', aby podsumować wyłącznie kolumny kategorialne. Wynik jest sam w sobie obiektem DataFrame, więc można go zapisać lub sformatować na potrzeby raportu.

import pandas as pd

df = pd.DataFrame({'age': [25, 30, 35, 40], 'score': [88, 72, 91, 65]})
print(df.describe().round(1))
#        age  score
# count  4.0    4.0
# mean  32.5   79.0
# std    6.5   12.0

shape, ndim i size

df.shape to krotka (nrows, ncols). df.ndim zawsze zwraca wartość 2 dla obiektów DataFrame. df.size to całkowita liczba komórek. Użyj len(df), aby uzyskać liczbę wierszy (taką samą jak df.shape[0]). Są to najprostsze kontrole poprawności — potwierdź oczekiwaną liczbę wierszy po wczytaniu danych i po każdym etapie filtrowania.

import pandas as pd

df = pd.DataFrame({'x': range(100), 'y': range(100), 'z': range(100)})
print(df.shape)   # (100, 3)
print(len(df))    # 100
print(df.size)    # 300
print(df.ndim)    # 2

dtypes i select_dtypes()

df.dtypes zwraca serię mapującą nazwę każdej kolumny na jej typ danych. df.select_dtypes(include='number') zwraca nowy obiekt DataFrame zawierający wyłącznie kolumny liczbowe — jest to przydatne do obliczania korelacji lub stosowania przekształceń liczbowych bez przypadkowego operowania na kolumnach tekstowych. Przekaż exclude='object', aby pominąć kolumny tekstowe.

import pandas as pd

df = pd.DataFrame({'a': [1,2], 'b': [1.0,2.0], 'c': ['x','y']})
print(df.dtypes)
# a      int64
# b    float64
# c     object

numeric = df.select_dtypes(include='number')
print(numeric.columns.tolist())  # ['a', 'b']

isnull() i liczby wartości null

df.isnull().sum() podaje liczbę brakujących wartości w każdej kolumnie — to najszybszy sposób na znalezienie kolumn wymagających oczyszczenia. Podziel wynik przez len(df), aby uzyskać udział brakujących wartości. Kolumna, w której brakuje ponad 50% wartości, często wymaga specjalnego potraktowania: należy ją usunąć lub zastosować imputację właściwą dla danej dziedziny.

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [1, np.nan, 3], 'b': [np.nan, np.nan, 6]})
print(df.isnull().sum())
# a    1
# b    2
print((df.isnull().sum() / len(df)).round(2))
# a    0.33
# b    0.67

value_counts() dla kolumny obiektu DataFrame

Wywołanie df['col'].value_counts() wyświetla częstość każdej unikatowej wartości w kolumnie, posortowaną według liczby wystąpień. Dodaj normalize=True, aby uzyskać wartości procentowe. Użyj dropna=False, aby uwzględnić NaN jako kategorię. Jest to najszybszy sposób sprawdzenia niezrównoważenia kategorii lub nieoczekiwanych wartości w kolumnie kategorialnej.

import pandas as pd

df = pd.DataFrame({'status': ['active','inactive','active','active','banned']})
print(df['status'].value_counts())
# active      3
# inactive    1
# banned      1
print(df['status'].value_counts(normalize=True).round(2))

Inspekcja columns i index

df.columns.tolist() zwraca zwykłą listę Python zawierającą nazwy kolumn — jest to przydatne podczas programowej modyfikacji lub rejestrowania informacji. df.index wyświetla etykiety wierszy i ich typ. Sprawdź df.index.is_unique, aby potwierdzić, że nie istnieją zduplikowane etykiety wierszy, co jest warunkiem wstępnym wielu operacji scalania i obliczeń szeregów czasowych.

import pandas as pd

df = pd.DataFrame({'a': [1,2,3]}, index=['x', 'y', 'z'])
print(df.columns.tolist())     # ['a']
print(df.index.tolist())       # ['x', 'y', 'z']
print(df.index.is_unique)      # True

sample() do losowej inspekcji

df.sample(n) zwraca n losowo wybranych wierszy bez powtórzeń. df.sample(frac=0.1) zwraca 10% wierszy. Ustaw random_state=, aby zapewnić powtarzalność wyników. Losowanie jest lepsze niż head() do wykrywania problemów w środkowej części dużego zbioru danych, które mogą nie występować w kilku pierwszych wierszach.

import pandas as pd

df = pd.DataFrame({'x': range(1000), 'y': range(1000)})
print(df.sample(3, random_state=42))
print(df.sample(frac=0.005, random_state=0))  # 0.5% of rows

memory_usage() do określania budżetu pamięci

df.memory_usage(deep=True) zwraca zużycie pamięci przez każdą kolumnę w bajtach. deep=True wymusza dokładny pomiar kolumn typu object, których ciągi znaków znajdują się poza buforem obiektu DataFrame. Zsumuj wartości, aby uzyskać całkowite zużycie pamięci. Użyj tej metody przed zmniejszeniem typów danych i po nim, aby potwierdzić ograniczenie zużycia pamięci.

import pandas as pd

df = pd.DataFrame({'a': range(10000), 'b': [str(i) for i in range(10000)]})
usage = df.memory_usage(deep=True)
print(usage)
print('Total bytes:', usage.sum())

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat podstawowej inspekcji obiektu DataFrame z tego modułu.

Podsumowanie lekcji

W tej lekcji nauczyłeś się, że: head() i tail() umożliwiają wizualną inspekcję początku i końca obiektu DataFrame, info() w jednym wywołaniu pokazuje typy danych i liczby brakujących wartości, a describe() udostępnia podsumowania statystyczne dla kolumn liczbowych. Następnie wczytamy dane z najpopularniejszych formatów plików — CSV, Excel i JSON — do obiektów DataFrame.

Często zadawane pytania

Czy lekcja „Podstawowa inspekcja DataFrame” jest bezpłatna?

Tak — pełny tekst „Podstawowa inspekcja DataFrame” 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 „Podstawowa inspekcja DataFrame”?

Używać metod head(), tail(), info(), describe() i atrybutu shape, aby szybko poznać zawartość i strukturę dowolnego obiektu DataFrame Ć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 4 z 4.

Ile czasu zajmuje lekcja „Podstawowa inspekcja DataFrame”?

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. Tworzenie DataFrame
  2. Wybieranie kolumn i wierszy
  3. Dodawanie i usuwanie kolumn
  4. Podstawowa inspekcja DataFrame
← Powrót do Pandas & NumPy Academy