
Pandas to jedno z najważniejszych narzędzi w ekosystemie Pythona do analizy danych. Jedną z ciekawszych funkcji, jakie oferuje, jest merge_ordered()
. Pozwala ona na łączenie dwóch ramek danych w uporządkowany sposób, co jest szczególnie przydatne przy analizach szeregów czasowych lub innych zbiorów danych wymagających zachowania kolejności.
Co to jest pandas.merge_ordered?
Funkcja merge_ordered()
działa podobnie do klasycznego merge()
, ale jej główne zadanie to scalanie ramek danych w sposób, który zachowuje porządek sortowania. Innymi słowy, jeśli pracujesz z danymi, które mają klucz porządkowy (najczęściej oś czasu), to ta funkcja pomoże Ci połączyć dane w logiczny sposób bez utraty ich kolejności.
Ogólna składnia funkcji wygląda następująco:
import pandas as pd
pd.merge_ordered(left, right, on=None, by=None, fill_method=None, suffixes=("_x", "_y"), how="outer")
Teraz przeanalizuję najważniejsze parametry, jakie możemy wykorzystać podczas używania merge_ordered()
.
Parametry funkcji merge_ordered()
- left – pierwsza ramka danych.
- right – druga ramka danych.
- on – kolumna (lub lista kolumn), według której następuje łączenie.
- by – opcjonalny argument, który pozwala dodatkowo grupować dane przed połączeniem.
- fill_method – jeśli jest ustawiony na
ffill
, to brakujące wartości zostaną uzupełnione ostatnią dostępną wartością. - suffixes – dodaje sufiksy do kolumn, które występują w obu ramach danych.
- how – określa sposób łączenia, domyślnie
"outer"
(pełne łączenie z zachowaniem wszystkich rekordów), ale można użyć też"inner"
,"left"
lub"right"
.
Przykład zastosowania merge_ordered()
Zobaczmy, jak działa merge_ordered()
w praktyce. Załóżmy, że mamy dwie ramki danych reprezentujące ceny akcji dwóch firm w różnych dniach:
import pandas as pd
df1 = pd.DataFrame({
"date": ["2024-06-01", "2024-06-03", "2024-06-05"],
"company": ["A", "A", "A"],
"price": [100, 102, 105]
})
df2 = pd.DataFrame({
"date": ["2024-06-02", "2024-06-04", "2024-06-05"],
"company": ["B", "B", "B"],
"price": [200, 198, 195]
})
merged_df = pd.merge_ordered(df1, df2, on="date", suffixes=("_A", "_B"), how="outer")
print(merged_df)
Otrzymamy tabelę:
date | company_A | price_A | company_B | price_B |
---|---|---|---|---|
2024-06-01 | A | 100 | NaN | NaN |
2024-06-02 | NaN | NaN | B | 200 |
2024-06-03 | A | 102 | NaN | NaN |
2024-06-04 | NaN | NaN | B | 198 |
2024-06-05 | A | 105 | B | 195 |
Jak widać, dane zostały połączone w sposób uporządkowany i zachowano chronologię dat. Wynik zawiera brakujące wartości tam, gdzie jedna z firm nie miała dostępnych danych.
Uzupełnianie brakujących wartości – fill_method
Często przy analizie danych chcemy uzupełnić brakujące wartości np. metodą forward fill (ffill
), czyli wypełnić je ostatnią dostępną wartością. Możemy to osiągnąć w sposób pokazany poniżej:
merged_df_ffill = pd.merge_ordered(df1, df2, on="date", suffixes=("_A", "_B"), how="outer", fill_method="ffill")
print(merged_df_ffill)
Teraz brakujące wartości w kolumnach price_A
i price_B
zostaną wypełnione ostatnią dostępną ceną.
Podsumowanie
Funkcja merge_ordered()
w Pandas to potężne narzędzie do łączenia danych w sposób uporządkowany. Jest szczególnie przydatna przy analizie szeregów czasowych oraz sytuacjach, gdzie kluczowe jest zachowanie kolejności danych.
Najważniejsze zalety merge_ordered()
to:
- Łączenie danych w uporządkowany sposób.
- Obsługa różnych metod uzupełniania brakujących wartości.
- Możliwość kontrolowania sposobu scalania danych (
how="outer"
,how="inner"
itp.).
Jeśli pracujesz nad analizą danych obejmujących chronologiczne zdarzenia, pandas merge_ordered()
może okazać się niezwykle przydatnym narzędziem, ułatwiającym uporządkowane scalanie różnych zbiorów danych.
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, 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.