Skip to main content
생성 단계에서 인덱스와 dtype을 명확히 고정하면, 이후 필터링/조인/모델 입력 단계에서 오류가 크게 줄어듭니다.

Series 생성 패턴

import pandas as pd
import numpy as np

# 1) list 기반
s1 = pd.Series([1, 2, 3], name="x")

# 2) dict 기반 (키가 인덱스)
s2 = pd.Series({"kr": 85, "en": 91, "math": 88}, name="score")

# 3) ndarray 기반 + index 지정
arr = np.array([0.2, 0.4, 0.6])
s3 = pd.Series(arr, index=["a", "b", "c"], dtype="float32")

DataFrame 생성 패턴

# 1) dict of list
users = pd.DataFrame({
    "user_id": [101, 102, 103],
    "region": ["seoul", "busan", "seoul"],
    "amount": [12000, 9000, 15000],
})

# 2) list of dict (API 응답 형태와 유사)
rows = [
    {"user_id": 101, "event": "click", "ts": "2026-02-25T10:00:00Z"},
    {"user_id": 102, "event": "purchase", "ts": "2026-02-25T10:01:00Z"},
]
events = pd.DataFrame.from_records(rows)

# 3) from_dict + orient 지정
mat = pd.DataFrame.from_dict(
    {"f1": [0.1, 0.2], "f2": [1.0, 1.5]},
    orient="columns"
)

생성 직후 표준화

df = users.copy()

# 열 순서 고정
df = df[["user_id", "region", "amount"]]

# dtype 고정
schema = {
    "user_id": "int64",
    "region": "string",
    "amount": "int64",
}
df = df.astype(schema)

# 인덱스 정책 고정
# 1) RangeIndex 유지 또는 2) 비즈니스 키 인덱스 지정
# df = df.set_index("user_id", drop=False)

자주 발생하는 생성 오류

  • list 길이가 열마다 다르면 ValueError가 발생합니다.
  • 숫자와 문자열이 섞인 열은 object로 올라가며, 연산 병목이 생길 수 있습니다.
  • 키 컬럼을 인덱스로 올린 뒤 drop=True를 쓰면 이후 조인에서 키가 사라질 수 있습니다.

이어서 볼 문서