W wielu rzeczywistych sytuacjach dane, których chcemy użyć, znajdują się w wielu plikach. Często musimy połączyć te pliki w jedną ramkę danych w celu analizy danych. Pandy zapewniają takie możliwości łatwego łączenia serii lub ramki danych z różnymi rodzajami logiki zbiorów dla indeksów i funkcjonalnością algebry relacyjnej w przypadku operacji typu łączenia/scalania. Możemy także łączyć dane z wielu tabel w Pandy . Ponadto pandy udostępniają również narzędzia do porównywania dwóch serii lub ramek danych i podsumowywania ich różnic.
Łączenie ramek danych w Pandach
Funkcja concat() w Pandach służy do dołączania kolumn lub wierszy z jednej ramki DataFrame do drugiej. The Funkcja concat() Pandy wykonuje całą ciężką pracę związaną z wykonywaniem operacji łączenia wzdłuż osi, wykonując jednocześnie opcjonalną logikę zestawów (zsumowanie lub przecięcie) indeksów (jeśli istnieją) na innych osiach.
Python3
import> pandas as pd> # First DataFrame> df1> => pd.DataFrame({> 'id'> : [> 'A01'> ,> 'A02'> ,> 'A03'> ,> 'A04'> ],> > 'Name'> : [> 'ABC'> ,> 'PQR'> ,> 'DEF'> ,> 'GHI'> ]})> # Second DataFrame> df2> => pd.DataFrame({> 'id'> : [> 'B05'> ,> 'B06'> ,> 'B07'> ,> 'B08'> ],> > 'Name'> : [> 'XYZ'> ,> 'TUV'> ,> 'MNO'> ,> 'JKL'> ]})> frames> => [df1, df2]> result> => pd.concat(frames)> display(result)> |
>
>
Wyjście:
id Name 0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>
Dołączanie DataFrames w Pandach
Kiedy łączyliśmy nasze ramki danych, po prostu dodaliśmy je do siebie, tj. ułożyliśmy je pionowo lub obok siebie. Innym sposobem łączenia ramek danych jest użycie kolumn w każdym zestawie danych zawierających wspólne wartości (wspólny unikalny identyfikator). Łączenie ramek danych przy użyciu wspólnego pola nazywa się łączeniem. Kolumny zawierające wspólne wartości nazywane są kluczami łączenia. Łączenie ramek DataFrame w ten sposób jest często przydatne, gdy jedna ramka DataFrame jest tabelą przeglądową zawierającą dodatkowe dane, które chcemy uwzględnić w drugiej.
Notatka: Ten proces łączenia tabel jest podobny do tego, co robimy z tabelami w pliku Baza danych SQL .
Podczas sklejania wielu ramek danych można wybrać sposób obsługi pozostałych osi (innych niż ta, która jest łączona). Można to zrobić na dwa następujące sposoby:
- Weźmy połączenie ich wszystkich, Join=’outer’. Jest to opcja domyślna, ponieważ powoduje zerową utratę informacji.
- Wybierz skrzyżowanie, dołącz = „inner”.
Przykład: połączenie wewnętrzne dwóch ramek danych przy użyciu metody concat().
W tym przykładzie dwie pandy DataFrames,df1>
Idf3>
, są łączone przy użyciu sprzężenia wewnętrznego w oparciu o ich indeksy. Wynikowa ramka danych o nazwie „result” zawiera tylko wiersze, w których znajduje się kolumna „id”.df1>
odpowiada kolumnie „Miasto” wdf3>
.
Python3
shweta tiwari
import> pandas as pd> df1> => pd.DataFrame({> 'id'> : [> 'A01'> ,> 'A02'> ,> 'A03'> ,> 'A04'> ],> > 'Name'> : [> 'ABC'> ,> 'PQR'> ,> 'DEF'> ,> 'GHI'> ]})> df3> => pd.DataFrame({> 'City'> : [> 'MUMBAI'> ,> 'PUNE'> ,> 'MUMBAI'> ,> 'DELHI'> ],> > 'Age'> : [> '12'> ,> '13'> ,> '14'> ,> '12'> ]})> # the default behaviour is join='outer'> # inner join> result> => pd.concat([df1, df3], axis> => 1> , join> => 'inner'> )> display(result)> |
>
>
Wyjście:
id Name City Age 0 A01 ABC MUMBAI 12 1 A02 PQR PUNE 13 2 A03 DEF MUMBAI 14 3 A04 GHI DELHI 12>
Łączenie za pomocą funkcji append().
Przydatnym skrótem do concat() jest metoda instancji append() w Series i DataFrame. Tej metody można użyć do łączenia danych z wielu tabel w Pandach. Metody te faktycznie były starsze niż concat.
Przykład 1: Łączenie dwóch ramek danych przy użyciu metody append().
W tym przykładzie dwie ramki danych Pandas,df1>
Idf2>
, są łączone za pomocąappend>
metodę, w wyniku czego powstaje nowa ramka danych o nazwie „result”. Wynikowa ramka DataFrame zawiera wszystkie wiersze z obudf1>
Idf2>
, z indeksem ciągłym.
śpij w javascript
Python3
import> pandas as pd> # First DataFrame> df1> => pd.DataFrame({> 'id'> : [> 'A01'> ,> 'A02'> ,> 'A03'> ,> 'A04'> ],> > 'Name'> : [> 'ABC'> ,> 'PQR'> ,> 'DEF'> ,> 'GHI'> ]})> # Second DataFrame> df2> => pd.DataFrame({> 'id'> : [> 'B05'> ,> 'B06'> ,> 'B07'> ,> 'B08'> ],> > 'Name'> : [> 'XYZ'> ,> 'TUV'> ,> 'MNO'> ,> 'JKL'> ]})> # append method> result> => df1.append(df2)> display(result)> |
>
>
Wyjście:
id Name 0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>
Notatka: append() może wymagać połączenia wielu obiektów.
Przykład 2: Połącz dane z wielu tabel w Pandach
W tym przykładzie trzy ramki danych Pandas,df1>
,df2>
, Idf3>
, są dołączane razem za pomocąappend>
metoda. Wynikowa ramka danych o nazwie „result” łączy wszystkie wiersze z trzech ramek danych, zachowując ciągły indeks.
Python3
import> pandas as pd> # First DataFrame> df1> => pd.DataFrame({> 'id'> : [> 'A01'> ,> 'A02'> ,> 'A03'> ,> 'A04'> ],> > 'Name'> : [> 'ABC'> ,> 'PQR'> ,> 'DEF'> ,> 'GHI'> ]})> # Second DataFrame> df2> => pd.DataFrame({> 'id'> : [> 'B05'> ,> 'B06'> ,> 'B07'> ,> 'B08'> ],> > 'Name'> : [> 'XYZ'> ,> 'TUV'> ,> 'MNO'> ,> 'JKL'> ]})> df3> => pd.DataFrame({> 'City'> : [> 'MUMBAI'> ,> 'PUNE'> ,> 'MUMBAI'> ,> 'DELHI'> ],> > 'Age'> : [> '12'> ,> '13'> ,> '14'> ,> '12'> ]})> # appending multiple DataFrame> result> => df1.append([df2, df3])> display(result)> |
>
>
Wyjście:
id Name City Age 0 A01 ABC NaN NaN 1 A02 PQR NaN NaN 2 A03 DEF NaN NaN 3 A04 GHI NaN NaN 0 B05 XYZ NaN NaN 1 B06 TUV NaN NaN 2 B07 MNO NaN NaN 3 B08 JKL NaN NaN 0 NaN NaN MUMBAI 12 1 NaN NaN PUNE 13 2 NaN NaN MUMBAI 14 3 NaN NaN DELHI 12>