CodeGym /Kursy /Python SELF PL /Łączenie danych z kilku arkuszy i plików Excel

Łączenie danych z kilku arkuszy i plików Excel

Python SELF PL
Poziom 28 , Lekcja 1
Dostępny

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ć.

Python

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ć.

Python

# 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 obu DataFrame.
  • outer: zwraca wszystkie wiersze, wypełniając brakujące wartości NaN.
  • left: zwraca wszystkie wiersze z lewego DataFrame i pasujące wiersze z prawego.
  • right: zwraca wszystkie wiersze z prawego DataFrame 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.

Python

# 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.

Python

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ą!

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION