6.3.5 .loc 돋보기로 열(Column)만 쏙 뽑아보기

💾 [실습 파일 다운로드] 본 강의의 전체 실습 코드를 직접 실행해 볼 수 있는 주피터 노트북 파일입니다. 아래 링크를 클릭하여 다운로드 후 VS Code에서 열어보세요.

🧮 수학적 의미: 첫 번째 차원(Axis 0) 전체에 대한 무조건부 투영

앞선 6.3.1 장에서는 데이터프레임에 바로 df['컬럼명'] 형태의 대괄호를 써서 열(Column)을 뽑아보았습니다. 하지만 판다스의 정석적인 행렬 참조 문법인 .loc[행, 열] 구조에서는, 앞쪽 ‘행(Row)’ 자리에 모든 것을 의미하는 콜론(:) 와일드카드를 배치함으로써 수학적 무조건부 선택(Universal Selection, $\forall$)을 수행하고, 뒤쪽 ‘열(Column)’ 자리에만 내가 원하는 속성 축을 명시하는 방식으로 열 벡터를 투영(Projection)합니다.

무조건부 행 선택과 열 벡터 투영 수학적 도식

🏷️ 비유로 이해하기: 출석부에 구멍 뚫어서 보기

  • 선생님이 학생들의 성적표를 들고 있습니다.
  • 성적표의 앞부분 학생 이름(‘윤일형’, ‘홍소희’ 등)은 가리지 않고 전부 열어둡니다. (이것이 행 자리에 들어가는 콜론 : 의 마법입니다)
  • 그리고 가로줄을 가리는 판때기를 이용해서 오직 ‘기말’과 ‘과제’ 점수 칸만 뚫어서 봅니다. 그러면 전교생의 ‘기말’, ‘과제’ 점수만 쫙 보이게 됩니다!

구멍 뚫린 판때기로 원하는 열만 보는 비유 도식


🪄 [실습 1] 준비물: 성적표 데이터

VS Code나 주피터 노트북을 열고 pandas_01.py 파일을 생성하여 단계별로 실습을 진행합니다.

1단계: 가상의 학급 성적표 생성

import pandas as pd

pf = pd.DataFrame(
    data=[
        [25, 35, 8, 18],
        [18, 27, 10, 20],
        [17, 17, 10, 19]
    ],
    index=['윤일형', '강수희', '홍소희'],
    columns=['중간', '기말', '과제', '출석']
)
print("--- 📚 원본 성적표 ---")
print(pf)

🪄 [실습 2] 한 과목만 쏙! (단일 열 참조)

작성한 코드 아래에 다음 코드를 추가합니다.

1단계: 단일 열 추출

.loc[행, 열] 형태에서 콤마(,) 앞의 자리는 행을 뜻합니다. 여기에 묻고 따지지 말고 싹 다 가져오라는 뜻의 : (콜론)만 달랑 하나 적어줍니다.

# 행은 "전부 다(:)", 열은 "'과제'" 만!
col_single = pf.loc[:, '과제']

print("--- [1단계] 전교생 과제 점수 (Series 반환) ---")
print(col_single)

[실행 결과]

--- [1단계] 전교생 과제 점수 (Series 반환) ---
윤일형     8
강수희    10
홍소희    10
Name: 과제, dtype: int64

.loc을 이용한 단일 열 추출 시 Series 반환

열 하나만 뽑았기 때문에 1차원 Series로 붕괴합니다. 표 모양(DataFrame)을 유지하고 싶다면 뒤를 pf.loc[:, ['과제']] 처럼 대괄호를 한 겹 더 씌우면 됩니다!


🪄 [실습 3] 여기서부터 저기까지 다 가져와! (열 슬라이싱)

계속해서 동일한 파일에 아래 코드를 추가합니다.

1단계: 열 슬라이싱

.loc의 가장 강력한 장점입니다. 행을 슬라이싱('강수희':'홍소희')했던 것처럼, 열 이름도 문자열인 채로 범위 슬라이싱이 가능합니다!

🚨 주의사항: .loc의 레이블 슬라이싱에서는 항상 끝 이름표까지 포함되어 나옵니다.

# 행은 "전부 다(:)", 열은 "'중간'부터 '과제' 열까지 싹 다!"
col_sliced = pf.loc[:, '중간':'과제']

print("--- [2단계] 중간부터 과제까지 슬라이싱 ---")
print(col_sliced)

[실행 결과]

--- [2단계] 중간부터 과제까지 슬라이싱 ---
     중간  기말  과제
윤일형  25  35   8
강수희  18  27  10
홍소희  17  17  10

.loc 열 슬라이싱: 마지막 열 이름 포함


🪄 [실습 4] 콕, 콕 찝어서 가져오기 (리스트 참조)

마지막으로 아래 코드를 추가합니다.

1단계: 리스트를 이용한 다중 열 추출

중간에 있는 과목들은 건너뛰고, 오직 ‘기말’과 ‘출석’ 두 개의 열만 골라서 보고 싶을 때는 대괄호 [ ] 리스트로 묶어서 두 번째 인자로 넘깁니다.

# 행은 "전부 다(:)", 열은 "['기말', '출석'] 만 핀셋으로 집어서!"
col_multi = pf.loc[:, ['기말', '출석']]

print("--- [3단계] 기말과 출석만 골라내기 ---")
print(col_multi)

[실행 결과]

--- [3단계] 기말과 출석만 골라내기 ---
     기말  출석
윤일형  35  18
강수희  27  20
홍소희  17  19

리스트를 이용한 다중 열 추출

😎 데이터 분석 실무 팁: 사실 그냥 열만 추출할 거라면 처음에 배운 pf[['기말', '출석']] 문법이 타자 치기엔 제일 편합니다. 하지만 복잡한 빅데이터 처리 파이프라인(Pipeline)을 작성할 때는, 문법의 일관성과 혼동 방지를 위해 항상 .loc[행, 열] 패턴을 잃지 않는 코딩 스타일이 버그를 90% 이상 줄여줍니다!

서브목차