Praktyczne aspekty wykorzystania funkcji Pandas concat()
Funkcja concat()
biblioteki Pandas stanowi istotne narzędzie do scalania różnorodnych struktur danych DataFrame w pojedynczą całość. Jest niezastąpiona podczas pracy z rozbudowanymi zbiorami danych, pozwalając na efektywne ujednolicanie informacji z wielu źródeł. W tym opracowaniu zgłębimy szczegółowe przykłady oraz omówimy zastosowanie funkcji concat()
w konkretnych sytuacjach.
Scalanie ramek danych w układzie pionowym (dodawanie wierszy)
Najczęstszym sposobem użycia concat()
jest łączenie ramek danych wzdłuż osi pionowej, co oznacza dopisywanie wierszy z jednej ramki do drugiej. To szczególnie przydatne, gdy dysponujemy wieloma plikami danych lub tabelami o podobnej strukturze, które pragniemy połączyć w jeden spójny zbiór.
Sposób zapisu składni w przypadku łączenia ramek danych pionowo:
python
pd.concat([df1, df2, ..., dfn], ignore_index=True)
Parametr ignore_index
z ustawioną wartością True
sprawia, że funkcja concat()
ignoruje oryginalne indeksy ramek i przypisuje nowe, sekwencyjne indeksy do scalonej ramki.
Przykład 1: Łączenie ramek o identycznej liczbie kolumn
Rozważmy sytuację, w której mamy dwie ramki, df1
i df2
, przechowujące dane o sprzedaży w różnych punktach handlowych:
python
import pandas as pd
df1 = pd.DataFrame({’Sklep’: [’A’, 'B’, 'C’],
'Sprzedaż’: [100, 200, 300]})
df2 = pd.DataFrame({’Sklep’: [’D’, 'E’, 'F’],
'Sprzedaż’: [400, 500, 600]})
Łącząc te ramki w pionie, utworzymy nową ramkę, która zawiera wszystkie dane o sprzedaży:
python
df_polaczony = pd.concat([df1, df2], ignore_index=True)
print(df_polaczony)
Rezultat:
Sklep Sprzedaż
0 A 100
1 B 200
2 C 300
3 D 400
4 E 500
5 F 600
Przykład 2: Łączenie ramek danych o zróżnicowanej liczbie kolumn
Funkcja concat()
umożliwia również łączenie ramek o różnej liczbie kolumn. W takich przypadkach brakujące wartości są uzupełniane wartościami NaN. Przykładowo, jeśli df3
zawiera dodatkową kolumnę o nazwie Dochód
:
python
df3 = pd.DataFrame({'Sklep': ['G', 'H', 'I'],
'Sprzedaż': [700, 800, 900],
'Dochód': [100, 200, 300]})
Scalając te ramki w układzie pionowym:
python
df_polaczony = pd.concat([df1, df2, df3], ignore_index=True)
Otrzymamy:
Sklep Sprzedaż Dochód
0 A 100 NaN
1 B 200 NaN
2 C 300 NaN
3 D 400 NaN
4 E 500 NaN
5 F 600 NaN
6 G 700 100
7 H 800 200
8 I 900 300
Scalanie ramek danych w układzie poziomym (dodawanie kolumn)
Oprócz łączenia ramek danych pionowo, funkcja concat()
pozwala również na ich łączenie w poziomie, co oznacza dołączanie kolumn z jednej ramki do drugiej. To rozwiązanie jest szczególnie przydatne, gdy dysponujemy ramkami, które zawierają podobne wiersze, a chcemy zgromadzić je w pojedynczy zestaw danych.
Składnia łączenia ramek danych w poziomie:
python
pd.concat([df1, df2, ..., dfn], axis=1)
Ustawienie parametru axis
na 1
nakazuje funkcji concat()
łączenie ramek w poziomie, czyli dodawanie nowych kolumn.
Przykład 3: Łączenie ramek danych o tych samych indeksach wierszy
Przyjmijmy, że mamy dwie ramki danych, df4
i df5
, które zawierają informacje o sprzedaży oraz liczbie klientów w różnych sklepach:
python
df4 = pd.DataFrame({'Sklep': ['A', 'B', 'C'],
'Sprzedaż': [100, 200, 300]})
df5 = pd.DataFrame({’Sklep’: [’A’, 'B’, 'C’],
'Liczba klientów’: [10, 20, 30]})
Łącząc te ramki w poziomie, uzyskamy nową ramkę, która zawiera dane zarówno o sprzedaży, jak i o liczbie klientów:
python
df_polaczony = pd.concat([df4, df5], axis=1)
print(df_polaczony)
Wynik:
Sklep Sprzedaż Liczba klientów
0 A 100 10
1 B 200 20
2 C 300 30
Przykład 4: Łączenie ramek danych o różnych indeksach wierszy
Funkcja concat()
umożliwia też łączenie ramek danych, które posiadają różne indeksy wierszy. W takim przypadku ramki zostaną połączone w poziomie, a brakujące dane zostaną uzupełnione wartościami NaN.
Na przykład, jeśli df6
zawiera dodatkowe wiersze:
python
df6 = pd.DataFrame({'Sklep': ['D', 'E'],
'Liczba klientów': [40, 50]})
Łącząc te ramki w poziomie:
python
df_polaczony = pd.concat([df4, df5, df6], axis=1)
Otrzymujemy:
Sklep Sprzedaż Liczba klientów
0 A 100 10
1 B 200 20
2 C 300 30
3 D NaN 40
4 E NaN 50
Zaawansowane metody wykorzystania funkcji concat()
Oprócz podstawowego łączenia ramek danych, funkcja concat()
oferuje szereg rozbudowanych opcji, które zwiększają jej uniwersalność:
Łączenie wielu ramek danych
Funkcja concat()
umożliwia łączenie więcej niż dwóch ramek danych w pojedynczym wywołaniu. Przykładowo, poniższy kod scala cztery ramki danych: df1
, df2
, df3
i df4
:
python
df_polaczony = pd.concat([df1, df2, df3, df4])
Wyznaczanie kluczy łączenia
Parametr keys
funkcji concat()
pozwala na określenie kolumny lub kolumn, które będą pełnić rolę klucza łączenia. Jest to szczególnie przydatne, gdy łączymy ramki danych zawierające dane hierarchiczne.
python
df_polaczony = pd.concat([df1, df2], keys=['level1', 'level2'])
Porządkowanie ramek danych przed łączeniem
Parametr sort
funkcji concat()
umożliwia sortowanie ramek danych przed ich połączeniem. Jest to przydatne, gdy chcemy połączyć ramki zawierające zduplikowane wiersze lub gdy istotna jest kolejność łączenia.
python
df_polaczony = pd.concat([df1, df2], sort=True)
Najczęściej zadawane pytania
1. Czym jest funkcja Pandas concat()?
Funkcja Pandas concat()
umożliwia łączenie wielu ramek danych w jedną.
2. W jaki sposób łączyć ramki danych w pionie?
Należy zastosować concat([df1, df2, ..., dfn], ignore_index=True)
.
3. Jak połączyć ramki danych w poziomie?
Należy użyć concat([df1, df2, ..., dfn], axis=1)
.
4. Czy można łączyć ramki danych o różnej liczbie kolumn?
Tak, funkcja concat()
uzupełni brakujące wartości za pomocą wartości NaN.
5. Czy możliwe jest łączenie ramek danych o różnych indeksach wierszy?
Tak, funkcja concat()
uzupełni brakujące wartości NaN.
6. W jaki sposób określić klucze łączenia?
Należy wykorzystać parametr keys
w funkcji concat()
.
7. Jak sortować ramki danych przed połączeniem?
Należy zastosować parametr sort
w funkcji concat()
.
8. Jak złączyć wiele ramek danych w jednym wywołaniu?
Należy przekazać listę ramek do funkcji concat()
: pd.concat([df1, df2, df3])
.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.