
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 zastosowania
Opanuj 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, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

