1. Навіщо об'єднувати дані?
У сучасному світі даних досить рідко можна знайти всю необхідну інформацію в одному файлі. Найчастіше дані розкидані по декількох таблицях і файлах, і для повноцінного аналізу їх потрібно об'єднувати. Наприклад, у вас можуть бути дані про продажі за кожен місяць в окремих файлах. Щоб проаналізувати загальні тренди, потрібно об'єднати ці дані в одну таблицю.
Крім того, об'єднання даних допомагає:
- Заощадити час на ручному складанні звітів.
- Зменшити кількість помилок, пов'язаних із ручним перенесенням даних.
- Автоматизувати робочий процес аналізу даних.
2. Методи об'єднання даних
Конкатенація даних
Вертикальне та горизонтальне об'єднання даних називається конкатенацією. Давайте почнемо з простого прикладу: у нас є два DataFrame, які ми хочемо об'єднати.
import pandas as pd
# Створимо два DataFrame зі схожою структурою
data1 = {
'Product': ['Apples', 'Bananas'],
'Sales': [100, 150]
}
data2 = {
'Product': ['Cherries', 'Dates'],
'Sales': [75, 200]
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# Вертикальна конкатенація (додаємо рядки)
combined = pd.concat([df1, df2], ignore_index=True)
print(combined)
У результаті ми отримаємо об'єднаний DataFrame з усіма рядками з обох джерел. Зверніть увагу на параметр ignore_index=True, який скидає індекси в підсумковому DataFrame.
Об'єднання даних із використанням методу merge
Коли у вас є дані, які потрібно об'єднати на основі спільних стовпців (наприклад, id або Product), на допомогу приходить метод merge. Це як побачення для ваших даних — вони мають мати щось спільне, щоб піти на нього.
# Створюємо приклад даних
sales_data = {
'Product': ['Apples', 'Bananas', 'Cherries'],
'Sales': [100, 150, 75]
}
price_data = {
'Product': ['Apples', 'Bananas', 'Dates'],
'Price': [1.2, 0.8, 3.0]
}
sales_df = pd.DataFrame(sales_data)
price_df = pd.DataFrame(price_data)
# Об'єднуємо DataFrame за стовпцем 'Product'
merged_df = pd.merge(sales_df, price_df, on='Product', how='inner')
print(merged_df)
Незважаючи на те, що у нас є інформація по кожному продукту, merge повертає тільки ті рядки, де є збіг за ключовим стовпцем Product.
Розглянемо типи об'єднань:
inner(за замовчуванням): повертає тільки ті рядки, які присутні в обохDataFrame.outer: повертає всі рядки, заповнюючи відсутні значенняNaN.left: повертає всі рядки з лівогоDataFrameі відповідні рядки з правого.right: повертає всі рядки з правогоDataFrameі відповідні рядки з лівого.
Об'єднання даних з кількох листів
Тепер, коли ми освіжили в пам'яті як працює об'єднання в pandas, давайте застосуємо це знання на практиці та об'єднаємо дані з кількох листів одного Excel-файлу.
# Читаємо Excel-файл з кількома листами
excel_file = pd.ExcelFile('sales_data.xlsx')
# Список імен усіх листів
sheet_names = excel_file.sheet_names
# Читаємо дані з кожного листа в окремий DataFrame та поміщаємо їх у список
dataframes = [pd.read_excel(excel_file, sheet_name=sheet_name) for sheet_name in sheet_names]
# Проводимо вертикальну конкатенацію всіх DataFrame
all_sales_data = pd.concat(dataframes, ignore_index=True)
print(all_sales_data)
Тут ми зчитуємо всі листи з Excel-файлу в окремі DataFrame, а потім об'єднуємо їх в один. Круто, правда?
Об'єднання даних з кількох файлів
На практиці ви можете зіткнутися із ситуацією, коли дані розподілені по кількох файлах. Розглянемо, як автоматизувати процес їх об'єднання.
import glob
# Шлях до файлів
file_path = r'data/sales_*.xlsx'
# Отримуємо список усіх файлів, що відповідають шаблону
files = glob.glob(file_path)
# Читаємо дані з кожного файлу в окремий DataFrame та поміщаємо їх у список
dataframes = [pd.read_excel(file) for file in files]
# Проводимо вертикальну конкатенацію всіх DataFrame
all_files_data = pd.concat(dataframes, ignore_index=True)
print(all_files_data)
Ми використовуємо бібліотеку glob для отримання списку файлів, що відповідають вказаному шаблону, і потім об'єднуємо дані з кожного файлу в один DataFrame.
3. Реальні приклади використання
Об'єднання даних для бізнес-аналізу
Припустимо, ви аналітик, який працює з даними про продажі за кожен місяць в окремому файлі. Завдяки вищезгаданим технікам ви можете з легкістю об'єднати дані для аналізу річних трендів і зробити актуальні висновки.
Автоматизація звітів
Завдяки автоматизації об'єднання даних, ви можете налаштувати скрипт, який буде збирати інформацію з різних джерел і формувати щоденні, щотижневі або щомісячні звіти автоматично.
Обробка даних із різних джерел
Ваші дані можуть надходити з різних систем, де кожне джерело надає частину інформації. За допомогою pandas ви можете зібрати їх воєдино, щоб отримати повну картину, наприклад, з'єднати дані про клієнтів та їх покупки.
4. Типові помилки та їх виправлення
Часта помилка — це невідповідність назв стовпців у об'єднуваних DataFrame. Переконайтеся, що стовпці, за якими ви об'єднуєте дані, дійсно однакові і у разі необхідності використовуйте параметри left_on і right_on у методі merge.
Іноді дані можуть містити відсутні значення після об'єднання. Використовуйте методи заповнення значеннями fillna або видалення dropna, щоб боротися з цією проблемою.
Якщо ваші дані містять дублікати, метод concat може призвести до отримання довшого DataFrame, ніж ви очікуєте. У цьому випадку використовуйте метод drop_duplicates для очищення.
Тепер, коли ми висвітлили методи та прийоми об'єднання даних у pandas, у вас є інструменти для того, щоб справитися з реальними завданнями автоматизації та аналізу даних. Використовуйте ці знання на благо!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ