8 sposobów na przekształcenie DataFrame w Pandas (przykłady)
Pandas to biblioteka do analizy i manipulacji danymi w Pythonie. Jej główna struktura danych to DataFrame - przechowuje dane w formie tabelarycznej z odpowiednio opisanymi wierszami i kolumnami. Pandas zapewnia szereg funkcji do modyfikacji i manipulacji tą strukturą. W artykule tym zajmiemy się 8 różnymi sposobami na transformację DataFrames. Zaczniemy od zaimportowania następujących zależności.
import numpy as np
import pandas as pd
Najpierw przejdziemy przez kilka przykładów, korzystając z następującego dataframe.
(obraz autora)
Dodaj / usuń kolumny
Pierwszym i najważniejszym sposobem transformacji dataframe jest dodawanie lub usuwanie kolumn. Nową kolumnę można dodać w następujący sposób:
df['new'] = np.random.random(5)
(obraz autora)
Przekazujemy wartości w postaci tablicy i nadajemy nowej kolumnie nazwę. Upewnij się, że rozmiar tablicy jest kompatybilny z rozmiarem DataFrame. Funkcji drop
używamy do usunięcia kolumny.
df.drop('new', axis=1, inplace=True)
(obraz autora)
Przekazujemy nazwę kolumny, którą chcemy usunąć. Parametr axis
ustawiamy na 1
- wskazuje to na usunięcie kolumny. I wreszcie parametr inplace
musi być True
, aby zmiany się nam zapisały.
2. Dodaj / usuń wiersze
Możemy użyć metody loc
, aby dodać pojedynczy wiersz do dataframe.
df.loc[5,:] = ['Jack', 3, 3, 4, 5, 1]
(obraz autora)
Funkcja loc
nadaje wierszom i kolumnom odpowiednią etykietę. Wyrażenie [5, :]
wskazuje wiersz z etykietą 5
i wszystkimi kolumnami. Funkcja drop
z parametrem axis
ustawionym na zero może zostać wykorzystana do usunięcia wiersza.
df.drop(5, axis=0, inplace=True)
Usunęliśmy właśnie wiersz, który został dodany w poprzednim kroku.
3. Funkcja insert
Funkcja insert
dodaje kolumnę w konkretnej pozycji.
df.insert(0, 'new', np.random.random(5))
Pierwszy parametr doprecyzowuje pozycję kolumny, drugi i trzeci parametr to odpowiednio nazwy kolumn oraz wartości.
(obraz autora)
4. Funkcja melt
Funkcja melt konwertuje dany DataFrame z szerokiego (duża liczba kolumn) na wąski (duża liczba wierszy). Najlepiej to wyjaśnić na przykładzie:
(obraz autora)
Zawiera on następujące po sobie dzienne pomiary dla 3 osób. Długi format można osiągnąć przy pomocy funkcji melt
.
pd.melt(df, id_vars='names').head()
(obraz autora)
Kolumna przekazana do parametru id_vars
pozostaje taka sama, a inne kolumny zostaną ze sobą połączone w kolumnę variable
and value
.
5. Funkcja concat
Funkcja concat łączy ze sobą wiele DataFrames we wskazanej osi (indeks lub kolumna). Kształt DataFrame musi być zgodny, uwzględniając oś, w jakiej chcemy łączyć dane. Spójrzmy na następujące DataFrames:
(obraz autora)
Oto jak możemy je połączyć:
pd.concat([df, df2], axis=0, ignore_index=True)
(obraz autora)
Ustawiamy parametr axis
na zero
, aby połączyć wszystko w indeksie. Parametr ignore_index
resetuje index. W innym wypadku zachowamy oryginalne indeksy (0,1,2,0,1,2). Aby połączyć wszystko w kolumnach, parametr axis
musi być ustawiony na 1
.
6. Funkcja Merge
Funkcja Merge również łączy DataFrames na podstawie wspólnych wartości w danej kolumnie / kolumnach. Spójrzmy na następujące DataFrames:
(obraz autora)
Możemy je połączyć w oparciu o kolumnę id.
customer.merge(order, on='id')
(obraz autora)
Domyślnie bierzemy tylko te wartości, które są w obu DataFrames. Można to jednak zmienić parametrem “how”. Jeśli, na przykład, ustawimy is jako left, to zabierzemy wszystkie wartości z lewego DataFrame, a z prawego zostaną dołączone tylko te, które pasują.
7. Get dummies
Niektóre modele uczenia maszynowego nie mogą poradzić sobie ze zmiennymi kategorycznymi. W takim przypadku powinniśmy zakodować zmienną, tak aby każda kategoria pokazywała się jako kolumna. Załóżmy, że mamy następujący DataFrame.
(obraz autora)
Funkcja get_dummies
koduje kolumny name oraz ctg
.
pd.get_dummies(df)
Zakodowany dataframe df (obraz autora)
Na przykład, w pierwszym wierszu name
to Jane
, a ctg
to A
. A zatem kolumny, które reprezentują te wartości, są ustawione jako 1
, a inne mają wartość 0
.
8. Funkcja pivot_table
Funkcja pivot_table
przekształca dany DataFrame na format, który pokazuje związek między zmiennymi.
(obraz autora)
Po lewej mamy dataframe, który zawiera dwie cechy kategoryczne (czyli kolumny) oraz cechę numeryczną. Chcemy tutaj zobaczyć średnią wartość naszych kategorii w obu kolumnach. Funkcja pivot_table
przekształca nasz DataFrame tak, aby średnie wartości lub każda inna agregacja były wyraźne.
df.pivot_table(index='name', columns='ctg', aggfunc='mean')
(obraz autora)
Podsumowanie
Omówiliśmy tutaj 8 różnych sposobów na przekształcenie DataFrame. Niektóre z nich zmieniają strukturę, podczas gdy inne wykonują obliczenia podczas transformacji.
Nauczyliśmy się również dodawania i usuwania kolumn i wierszy. Co więcej, funkcje merge i concat przekształcają DataFrames, łącząc je. Te wszystkie operacje są istotną częścią analizy i manipulacji danymi.
Dziękuję za uwagę. Dajcie znać, co sądzicie, w komentarzu.
Oryginał tekstu w języku angielskim możesz przeczytać tutaj.