데이터 분석

데이터프레임 괄호 2개와 괄호 1개 차이(+ 데이터프레임과 시리즈 차이)

The Ohgorithm 2025. 10. 11. 12:33

df['이름']과 df[['이름']]은 겉보기엔 비슷하지만 리턴 타입이 다릅니다.
쉽게 말하면, 전자는 “시리즈(Series)”, **후자는 “데이터프레임(DataFrame)”**이에요.


✅ 1️⃣ df['이름'] → Series (열 하나만 선택)

  • 하나의 열(column) 을 선택해서 시리즈 형태로 가져옵니다.
  • 즉, 1차원 데이터예요.
  • 인덱스(행 번호)는 유지되지만, 열 이름이 사라집니다.
 
df['이름']

결과 예시:

 
0 김민수 1 이지은 2 박철수 Name: 이름, dtype: object

➡️ 결과가 Series이기 때문에 .shape 하면 (3,) 처럼 나와요.
➡️ 다른 열과 함께 쓰려면 DataFrame 형태로 다시 바꿔야 합니다 (.to_frame()).


✅ 2️⃣ df[['이름']] → DataFrame (열 여러 개 중 하나 선택)

  • 대괄호를 이중으로 쓰면, 열 이름을 리스트로 지정하는 형태입니다.
  • 따라서 결과가 **DataFrame 형태(2차원)**로 유지돼요.
  • 즉, 표(table) 모양 그대로 유지되죠.
 
df[['이름']]

결과 예시:

 
이름 0 김민수 1 이지은 2 박철수

➡️ 결과가 DataFrame이기 때문에 .shape 하면 (3, 1) 로 나와요.
➡️ 여러 열을 한 번에 가져올 수도 있습니다:

 
df[['이름', '나이', '성별']]

✅ 3️⃣ 쉽게 비유하자면

코드                                    비유결과                                                                                        형태
df['이름'] 표에서 “이름” 한 줄만 뜯어낸 리스트 Series (1D)
df[['이름']] 표에서 “이름” 열만 남긴 작은 표 DataFrame (2D)

✅ 4️⃣ 실전에서의 차이

  • Series로는 연산, 통계, 그래프 등에 바로 쓰기 편함
  • df['나이'].mean()
  • DataFrame으로는 다른 열과 함께 병합, 인덱싱 유지, 모델 입력 등에 유용
  • df[['나이']].mean() # 여전히 DataFrame으로 결과

요약하자면 👇

df['이름'] → 결과가 Series (1차원)
df[['이름']] → 결과가 DataFrame (2차원)