0Pricing
Python Academy · Урок

Объединение, соединение и очистка данных

Объединяйте DataFrames и профессионально обрабатывайте пропущенные значения.

«Объединение, соединение и очистка данных» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

pd.merge

pd.merge(left, right, on="key") объединяет два DataFrame по общему столбцу — аналогично SQL JOIN.

import pandas as pd

users = pd.DataFrame({"id":[1,2,3],"name":["A","B","C"]})
orders = pd.DataFrame({"user_id":[1,1,2],"amount":[100,50,200]})
result = pd.merge(users, orders, left_on="id", right_on="user_id")
print(result)

Типы объединения

Укажите how="inner" (по умолчанию), "left", "right" или "outer", чтобы определить, какие строки сохранить.

import pandas as pd

A = pd.DataFrame({"key":["a","b","c"],"val":[1,2,3]})
B = pd.DataFrame({"key":["b","c","d"],"x":[10,20,30]})

print(pd.merge(A, B, on="key", how="left"))   # all of A
print(pd.merge(A, B, on="key", how="outer"))  # all rows

df.join

df.join(other) объединяет данные по индексу. Этот способ быстрее и проще, когда объединение выполняется по индексу, а не по столбцу.

import pandas as pd

df1 = pd.DataFrame({"a":[1,2]}, index=["x","y"])
df2 = pd.DataFrame({"b":[3,4]}, index=["x","y"])
print(df1.join(df2))
# x: a=1 b=3
# y: a=2 b=4

concat

pd.concat([df1, df2]) объединяет DataFrames по вертикали (ось 0) или по горизонтали (ось 1).

import pandas as pd

df1 = pd.DataFrame({"a":[1,2]})
df2 = pd.DataFrame({"a":[3,4]})
print(pd.concat([df1,df2], ignore_index=True))
# a: 1 2 3 4

# Horizontal:
df3 = pd.DataFrame({"b":[5,6]})
print(pd.concat([df1,df3], axis=1))

Обработка пропущенных значений

Обнаруживайте NaN с помощью isna()/notna(). Заполняйте пропуски с помощью fillna(). Удаляйте их с помощью dropna().

import pandas as pd, numpy as np

df = pd.DataFrame({"a":[1,np.nan,3],"b":[np.nan,2,3]})
print(df.isna().sum())      # count nulls per column
df["a"] = df["a"].fillna(0)
df = df.dropna()            # drop rows with any null

Стратегии fillna

Заполняйте пропущенные значения константой, предыдущим значением (ffill), следующим значением (bfill) или средним значением столбца.

import pandas as pd, numpy as np

df = pd.DataFrame({"val":[1, np.nan, np.nan, 4]})
print(df["val"].ffill())   # forward fill: 1 1 1 4
print(df["val"].bfill())   # back fill:    1 4 4 4
print(df["val"].fillna(df["val"].mean()))   # fill with mean

Изменение типов данных

Используйте astype() для преобразования типов столбцов. Используйте pd.to_datetime() для разбора дат, а pd.to_numeric с errors="coerce" — для безопасного преобразования в числовой тип.

import pandas as pd

df = pd.DataFrame({"age":["25","30","35"],"date":["2024-01-01","2024-06-15","2024-12-31"]})
df["age"] = df["age"].astype(int)
df["date"] = pd.to_datetime(df["date"])
print(df.dtypes)

Очистка строк

Аксессор .str в Pandas предоставляет векторизованные операции со строками: strip(), lower(), replace(), extract().

import pandas as pd

df = pd.DataFrame({"name":["  Alice  "," bob","CAROL"]})
df["clean"] = df["name"].str.strip().str.title()
print(df["clean"])   # Alice / Bob / Carol

Переименование и изменение порядка столбцов

Переименовывайте столбцы с помощью df.rename(columns={"old":"new"}). Изменяйте их порядок, индексируя DataFrame списком.

import pandas as pd

df = pd.DataFrame({"a":[1],"b":[2],"c":[3]})
df = df.rename(columns={"a":"alpha","b":"beta"})
df = df[["c","beta","alpha"]]   # reorder
print(df.columns.tolist())      # ['c', 'beta', 'alpha']

Поиск дубликатов

Находите дубликаты с помощью duplicated() и удаляйте их с помощью drop_duplicates().

import pandas as pd

df = pd.DataFrame({"id":[1,2,1,3],"val":["a","b","a","c"]})
print(df.duplicated())           # [F F T F]
print(df[df.duplicated()])       # show duplicates
clean = df.drop_duplicates(subset=["id"])

apply для преобразования строк и столбцов

df.apply(func, axis=1) применяет функцию к каждой строке. axis=0 применяет её к каждому столбцу.

import pandas as pd

df = pd.DataFrame({"a":[1,2,3],"b":[4,5,6]})
# New column = row sum:
df["total"] = df.apply(lambda row: row["a"] + row["b"], axis=1)
print(df)

Быстрая проверка

Что делает df.fillna(method="ffill")?

Итоги

Используйте pd.merge для объединений в стиле SQL, а pd.concat — для объединения данных. Обрабатывайте NaN с помощью isna(), fillna() и dropna(). Очищайте строки с помощью аксессора .str. Преобразуйте типы с помощью astype() и pd.to_datetime().

Часто задаваемые вопросы

Урок «Объединение, соединение и очистка данных» бесплатный?

Да — полный текст урока «Объединение, соединение и очистка данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Объединение, соединение и очистка данных»?

Объединяйте DataFrames и профессионально обрабатывайте пропущенные значения. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Объединение, соединение и очистка данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы Series и DataFrame
  2. Индексация, фильтрация и логические маски
  3. GroupBy, агрегация и сводные таблицы
  4. Объединение, соединение и очистка данных
← Назад к Python Academy