
Pracując z biblioteką pandas w języku Python, często zachodzi potrzeba łączenia różnych zbiorów danych. Jednym z najbardziej elastycznych narzędzi do tego celu jest funkcja pandas.concat()
. W tym artykule omówię szczegółowo, jak działa pandas concat w języku Python oraz przedstawię praktyczne przykłady zastosowania.
Co to jest pandas.concat()?
Pandas concat()
to funkcja, która pozwala na łączenie obiektów DataFrame
i Series
wzdłuż wybranej osi: poziomej (axis=1
) lub pionowej (axis=0
). Dzięki niej możemy łatwo zestawiać dane z różnych źródeł, dokonywać agregacji czy tworzyć nowe struktury danych.
Podstawowa składnia pandas.concat()
Składnia tej funkcji wygląda następująco:
pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, names=None, verify_integrity=False, sort=False, copy=True)
Najważniejsze parametry funkcji:
- objs – lista obiektów do połączenia, np.
[df1, df2]
. - axis – określa, czy łączymy dane wierszami (
0
– domyślnie) czy kolumnami (1
). - join – sposób łączenia danych:
'outer'
(domyślne – łączy wszystkie dane) lub'inner'
(łączy tylko wspólne elementy). - ignore_index – jeśli ustawione na
True
, indeksy zostaną zresetowane.
Przykład zastosowania pandas.concat()
Zacznijmy od prostego przykładu – połączymy dwa obiekty DataFrame
w pionie:
import pandas as pd
# Tworzymy dwa przykładowe DataFrame
df1 = pd.DataFrame({
'ID': [1, 2, 3],
'Imię': ['Anna', 'Bogdan', 'Cezary']
})
df2 = pd.DataFrame({
'ID': [4, 5, 6],
'Imię': ['Dorota', 'Edward', 'Filip']
})
# Łączenie wierszami (axis=0)
df_concat = pd.concat([df1, df2])
print(df_concat)
Wynik powyższego kodu:
ID | Imię |
---|---|
1 | Anna |
2 | Bogdan |
3 | Cezary |
4 | Dorota |
5 | Edward |
6 | Filip |
Łączenie danych z resetowaniem indeksu
Domyślnie indeksy w nowym DataFrame
zachowają swoje pierwotne wartości. Możemy jednak je zresetować:
df_concat_reset = pd.concat([df1, df2], ignore_index=True)
print(df_concat_reset)
Teraz indeksy zostaną przypisane na nowo, poczynając od 0
.
Łączenie danych w poziomie
Jeśli chcemy połączyć dane w poziomie (czyli kolumnami), ustawiamy axis=1
:
df_horizontal = pd.concat([df1, df2], axis=1)
print(df_horizontal)
Takie rozwiązanie może się przydać, gdy np. chcemy dodać nowe cechy do istniejących danych.
Łączenie z różnymi kolumnami
Jeśli dwa DataFrame
mają różne kolumny, tworzone są wartości NaN
dla brakujących danych:
df3 = pd.DataFrame({
'ID': [7, 8],
'Nazwisko': ['Nowak', 'Kowalski']
})
df_concat_mixed = pd.concat([df1, df3], sort=False)
print(df_concat_mixed)
W tej sytuacji wiersze df1
będą miały wartości NaN
w kolumnie „Nazwisko”, a wiersze df3
– w kolumnie „Imię”.
Łączenie z kluczami (keys)
Czasem warto pogrupować dane przy łączeniu. Możemy użyć parametru keys
:
df_concat_keys = pd.concat([df1, df2], keys=['grupa1', 'grupa2'])
print(df_concat_keys)
Dzięki temu dostaniemy dodatkowy poziom indeksowania, co może być przydatne przy analizie danych.
Podsumowanie
Funkcja pandas.concat()
to potężne narzędzie do łączenia danych w języku Python. Pozwala na:
- Łączenie wierszami i kolumnami.
- Resetowanie indeksów.
- Gospodarowanie brakującymi danymi.
- Dodawanie kluczy dla lepszej organizacji danych.
To jedno z najbardziej przydatnych narzędzi w pracy z danymi, które zdecydowanie warto znać!
„` Inny ciekawy artykuł: Jak działa pandas series w języku Python? Przykład zastosowaniaOpanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.