0Pricing
Python Academy · 강의

병합, 결합 및 데이터 정리

DataFrame을 결합하고 결측값을 전문적으로 처리합니다.

병합, 결합 및 데이터 정리은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 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를 세로(axis=0) 또는 가로(axis=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))

누락된 값 처리

isna()/notna()으로 NaN을 감지합니다. 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()을 사용하고, 안전한 숫자 변환을 위해 errors="coerce"와 함께 pd.to_numeric을 사용합니다.

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 접근자는 벡터화된 문자열 연산을 제공합니다: 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"})으로 이름을 변경합니다. 목록으로 인덱싱하면 순서를 재배치할 수 있습니다.

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")은 무엇을 합니까?

복습

SQL 방식의 결합에는 pd.merge를, 데이터를 이어 붙일 때는 pd.concat을 사용합니다. isna(), fillna(), dropna()로 NaN을 처리합니다. .str 접근자로 문자열을 정리합니다. astype()과 pd.to_datetime()으로 형식을 변환합니다.

자주 묻는 질문

“병합, 결합 및 데이터 정리” 강의는 무료인가요?

네 — “병합, 결합 및 데이터 정리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“병합, 결합 및 데이터 정리”에서 뭘 배우나요?

DataFrame을 결합하고 결측값을 전문적으로 처리합니다. 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Python Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“병합, 결합 및 데이터 정리” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Series와 DataFrame 기초
  2. 인덱싱, 필터링 및 불리언 마스크
  3. GroupBy, 집계 및 피벗 테이블
  4. 병합, 결합 및 데이터 정리
← Python Academy(으)로 돌아가기