Soner Yıldırım
Soner YıldırımJunior Data Scientist @ Invent Analytics

8 sposobów na przekształcenie DataFrame w Pandas (przykłady)

Poznaj skuteczne sposoby na przekształcenie głównej struktury danych w bibliotece Pandas w Pythonie, czyli DataFrame.
19.04.20214 min
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.

<p>Loading...</p>