Python Pandas Tutorial

W tej lekcji naszego Pandas tutoriala, pokaże Wam jak możemy łączyć ze sobą zbiory. Jeżeli ktoś zna SQL to będzie kojarzyć te operacja jako union i join. Natomiast w Pandas mamy do dyspozycji dwie główne funkcje, nazywające się merge oraz concat. Do dzieła!

Na początku przygotujemy sobie zbiory danych które następnie będziemy łączyć. 2 zbiory które zawierają listę osób oraz ich wiek oraz 1 zbiór który zawiera listę osób oraz ich miejsce zamieszkania.

age = pd.DataFrame({'Name':['Michał', 'Adam', 'Ewa', 'Jakub'],
                           'Age':[39,28,19,32]})

pandas concat

age2 = pd.DataFrame({'Name':['Mike'],
                           'Age':[50]})

pandas merge i concat

city = pd.DataFrame({'Name':['Adam', 'Ewa', 'Ola', 'Krystian', 'Jacek'],
                            'City':['Warszawa', 'Kraków', 'Poznań', 'Zakopane', 'Olsztyn']})

pandas merge

Pandas concat

Na początku połączymy dwa pierwsze zbiory z wiekiem w jeden. Jeden pod drugim. Użyjemy do tego celu funkcji concat. Wystarczy podać listę zbiorów które chcemy połaczyć:

age_new = pd.concat([age, age2])

pandas concat

Wszystko jest dobrze, ale przydała by nam się jeszcze informacja o tym który wiersz pochodzi z którego zbioru. Aby je oznakować możemy użyć parametru keys:

age_new = pd.concat([age, age2], keys=['age', 'age2'])

pandas concat

Pandas merge

W tym momencie mamy 2 zbiory. Jeden age_new z wiekem osób oraz drugi, który nazywa się city, z miejscem ich zamieszkania. Teraz naszym zadaniem jest przypisać do osób wiek oraz miejsce zamieszkania.

Do tego celu, mamy do dyspozycji w Pandas funkcję merge.

Problem jaki się pojawia jest taki, że w obydwu zbiorach tylko część osób jest taka sama. W związku z czym, jak powinien wyglądać nasz wynikowy zbiór danych? Czy powinien zawierać tylko i wyłącznie osoby które występują w obydwu zbiorach, czy może wszystkie osoby, natomiast tam gdzie brakuje informacji o miejscu zamieszkania lub wieku, powinniśmy mieć NaN?

Funkcja merge pozwala nam wybór sposobu łączenia, zobaczmy:

  • Merge, inner, czyli tylko część wspólna

Funkcja merge, przyjmuje kilka prostych argumentów. najważniejsze z nich to 'on', gdzie podajemy klucz po którym chcemy połączyć dane, oraz 'how' który pozwala na wybór sposobu łączenia. Jeżeli ustawimy how=inner, wtedy będziemy łączyć tylko te dane które znajdują się w obydwu zbiorach:

pd.merge(age_new, city, on='Name', how='inner')

pandas merge inner

Podaliśmy nasze zbiory danych, ustawiliśmy klucz po którym nastąpiło łączenie zbiorów na 'Name' oraz sposób łączenia na inner.

  • Merge, outer, czyli wszystkie dane

W drugą stronę, jeżeli ustawimy parametr how na outer, to otrzymamy wszystkie dane z obydwu zbiorów. Po prostu brakujące dane będą widoczne jako NaN:

pd.merge(age_new, city, on='Name', how='outer')

pandas merge outer

  • Merge, left, czyli wszystkie dane z lewego zbiory danych

Jeżeli ustawimy parametr how na left, to otrzymamy wszystkie dane z lewego zbioru danych, czyli tego który podamy jako pierwszy do funkcji merge, natomiast brakujące dane z prawego zbioru będą widoczne jako NaN:

pd.merge(age_new, city, on='Name', how='left')

pandas merge left

  • Merge, right, czyli wszystkie dane z prawego zbiory danych

Jeżeli ustawimy parametr how na right, to otrzymamy wszystkie dane z prawego zbioru danych, czyli tego który podamy jako drugido funkcji merge, natomiast brakujące dane z lewego zbioru będą widoczne jako NaN:

pd.merge(age_new, city, on='Name', how='right')

pandas merge right

Podsumowanie Pandas merge i concat

Łączenie zbiorów danych w Pandas jest dość proste. Funkcje merge oraz concat są intuicyjne oraz efektywne. Na pewno jest to milion razy przyjemniejsze niż próba wykonania tych operacji w Excelu.

Spis treści Pandas Tutorial / Kurs

  1. Pandas – Intro
  2. Pandas – przygotowanie środowiska pracy
  3. Pandas – tworzenie prostego DataFrame
  4. Pandas – odczyt i zapis do pliku
  5. Pandas – podstawowe informacje o DataFrame
  6. Pandas – indeksy oraz funkcja loc
  7. Pandas – maski
  8. Pandas – modyfikacje kolumn
  9. Pandas – funkcja apply
  10. Pandas – typy danych
  11. Pandas – grupowanie z groupby
  12. Pandas – unstack oraz tabele przestawne
  13. Pandas – łączenie zbiorów danych
  14. Pandas – SQL i bazy danych
Facebook Comments