1. Dlaczego łączyć dane?
We współczesnym świecie danych rzadko można znaleźć wszystkie potrzebne informacje w jednym pliku. Często dane są rozproszone w kilku tabelach i plikach, i aby przeprowadzić pełną analizę, trzeba je połączyć. Na przykład, możesz mieć dane sprzedaży za każdy miesiąc w osobnych plikach. Aby przeanalizować ogólne trendy, trzeba te dane połączyć w jedną tabelę.
Poza tym, łączenie danych pozwala:
- Zaoszczędzić czas na ręcznym tworzeniu raportów.
- Zredukować liczbę błędów związanych z ręcznym przenoszeniem danych.
- Zautomatyzować proces analizy danych.
2. Metody łączenia danych
Konkatenacja danych
Pionowe i poziome łączenie danych nazywa się konkatenacją. Zacznijmy od prostego przykładu: mamy dwa DataFrame
, które chcemy połączyć.
import pandas as pd
# Tworzymy dwa DataFrame o podobnej strukturze
data1 = {
'Product': ['Jabłka', 'Banany'],
'Sales': [100, 150]
}
data2 = {
'Product': ['Wiśnie', 'Daktyle'],
'Sales': [75, 200]
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# Pionowa konkatenacja (dodajemy wiersze)
combined = pd.concat([df1, df2], ignore_index=True)
print(combined)
W wyniku otrzymamy połączony DataFrame
ze wszystkimi wierszami z obu źródeł. Zwróć uwagę na parametr ignore_index=True
, który resetuje indeksy w końcowym DataFrame
.
Łączenie danych z użyciem metody merge
Kiedy masz dane, które trzeba połączyć na podstawie wspólnych kolumn (np. id
lub Product
), na pomoc przychodzi metoda merge
. To jak randka dla twoich danych — muszą mieć coś wspólnego, żeby mogły się połączyć.
# Tworzymy przykład danych
sales_data = {
'Product': ['Jabłka', 'Banany', 'Wiśnie'],
'Sales': [100, 150, 75]
}
price_data = {
'Product': ['Jabłka', 'Banany', 'Daktyle'],
'Price': [1.2, 0.8, 3.0]
}
sales_df = pd.DataFrame(sales_data)
price_df = pd.DataFrame(price_data)
# Łączymy DataFrame po kolumnie 'Product'
merged_df = pd.merge(sales_df, price_df, on='Product', how='inner')
print(merged_df)
Mimo że mamy informacje o każdym produkcie, merge
zwraca tylko te wiersze, gdzie występuje dopasowanie według kluczowej kolumny Product
.
Omówmy typy połączeń:
inner
(domyślnie): zwraca tylko te wiersze, które występują w obuDataFrame
.outer
: zwraca wszystkie wiersze, wypełniając brakujące wartościNaN
.left
: zwraca wszystkie wiersze z lewegoDataFrame
i pasujące wiersze z prawego.right
: zwraca wszystkie wiersze z prawegoDataFrame
i pasujące wiersze z lewego.
Łączenie danych z kilku arkuszy
Teraz, gdy przypomnieliśmy sobie, jak działa łączenie w pandas, zastosujmy tę wiedzę w praktyce i połączmy dane z kilku arkuszy jednego pliku Excel.
# Czytamy plik Excel z kilkoma arkuszami
excel_file = pd.ExcelFile('sales_data.xlsx')
# Lista nazw wszystkich arkuszy
sheet_names = excel_file.sheet_names
# Czytamy dane z każdego arkusza do osobnego DataFrame i umieszczamy je na liście
dataframes = [pd.read_excel(excel_file, sheet_name=sheet_name) for sheet_name in sheet_names]
# Wykonujemy pionową konkatenację wszystkich DataFrame
all_sales_data = pd.concat(dataframes, ignore_index=True)
print(all_sales_data)
W tym miejscu czytamy wszystkie arkusze z pliku Excel do osobnych DataFrame
, a następnie łączymy je w jeden. Mocne, prawda?
Łączenie danych z kilku plików
W praktyce możesz spotkać się z sytuacją, gdy dane są rozproszone w kilku plikach. Zobaczmy, jak zautomatyzować proces ich łączenia.
import glob
# Ścieżka do plików
file_path = r'data/sales_*.xlsx'
# Pobieramy listę wszystkich plików odpowiadających wzorcowi
files = glob.glob(file_path)
# Czytamy dane z każdego pliku do osobnego DataFrame i umieszczamy je na liście
dataframes = [pd.read_excel(file) for file in files]
# Wykonujemy pionową konkatenację wszystkich DataFrame
all_files_data = pd.concat(dataframes, ignore_index=True)
print(all_files_data)
Korzystamy z biblioteki glob
, aby uzyskać listę plików odpowiadających podanemu wzorcowi, a następnie łączymy dane z każdego pliku w jeden DataFrame
.
3. Realne przykłady wykorzystania
Łączenie danych do analizy biznesowej
Załóżmy, że jesteś analitykiem pracującym z danymi sprzedaży za każdy miesiąc w osobnym pliku. Dzięki wspomnianym technikom możesz z łatwością połączyć dane do analizy rocznych trendów i wyciągnąć odpowiednie wnioski.
Automatyzacja raportów
Dzięki automatyzacji łączenia danych możesz stworzyć skrypt, który będzie zbierał informacje z różnych źródeł i generował dzienne, tygodniowe lub miesięczne raporty automatycznie.
Przetwarzanie danych z różnych źródeł
Twoje dane mogą pochodzić z różnych systemów, gdzie każde źródło dostarcza część informacji. Używając pandas, możesz je zintegrować, aby uzyskać pełny obraz, np. połączyć dane o klientach i ich zakupach.
4. Typowe błędy i ich naprawa
Częsty błąd — to niespójność nazw kolumn w łączonych DataFrame
. Upewnij się, że kolumny, po których łączysz dane, są rzeczywiście takie same i w razie potrzeby użyj parametrów left_on
i right_on
w metodzie merge
.
Czasami dane mogą zawierać brakujące wartości po połączeniu. Użyj metod uzupełniania wartościami fillna
lub usuwania dropna
, aby sobie z tym poradzić.
Jeśli Twoje dane zawierają duplikaty, metoda concat
może prowadzić do uzyskania dłuższego DataFrame
, niż się spodziewasz. W takim przypadku użyj metody drop_duplicates
do oczyszczenia.
Teraz, kiedy omówiliśmy metody i techniki łączenia danych w pandas, masz narzędzia do radzenia sobie z realnymi zadaniami automatyzacji i analizy danych. Wykorzystaj tę wiedzę z korzyścią!
GO TO FULL VERSION