pandas DataFrame의 Index와 Columns 이해하기
1. Index (행)
DataFrame에서 Index는 각 행(row)을 식별하는 고유한 레이블입니다.
•
기본 인덱스: 따로 인덱스를 지정하지 않으면 0부터 시작하는 숫자가 자동으로 붙습니다.
•
사용자 정의 인덱스: 원하는 값(날짜, 이름, 숫자 등)을 인덱스로 사용할 수 있습니다.
•
멀티 인덱스: 여러 단계로 구성된 인덱스를 만들 수 있습니다.
# 인덱스 예시
import pandas as pd
# 기본 인덱스
data1 = {'이름': ['김철수', '이영희', '박민수'],
'나이': [25, 28, 22]}
df1 = pd.DataFrame(data1)
print("기본 인덱스:")
print(df1)
# 사용자 정의 인덱스
df2 = pd.DataFrame(data1, index=['학생1', '학생2', '학생3'])
print("\n사용자 정의 인덱스:")
print(df2)
# 멀티 인덱스
arrays = [['1학년', '1학년', '2학년'],
['A반', 'B반', 'A반']]
df3 = pd.DataFrame(data1, index=pd.MultiIndex.from_arrays(arrays, names=['학년', '반']))
print("\n멀티 인덱스:")
print(df3)
Python
복사
2. Columns (열)
Columns는 DataFrame의 각 열(column)을 식별하는 이름입니다.
•
데이터 특성 표현: 각 열은 하나의 변수 또는 특성을 나타냅니다.
•
데이터 타입: 각 열은 서로 다른 데이터 타입을 가질 수 있습니다(숫자, 문자열, 날짜 등).
•
멀티 컬럼: 인덱스와 마찬가지로 계층적 구조의 열 이름을 설정할 수 있습니다.
# 멀티 컬럼 예시
import pandas as pd
# 2단계 계층 구조의 컬럼 생성
columns = pd.MultiIndex.from_tuples([
('성적', '중간고사'),
('성적', '기말고사'),
('신체정보', '키'),
('신체정보', '몸무게')
])
data = {
('성적', '중간고사'): [85, 90, 75],
('성적', '기말고사'): [88, 92, 78],
('신체정보', '키'): [170, 165, 180],
('신체정보', '몸무게'): [65, 55, 70]
}
df = pd.DataFrame(data, index=['학생1', '학생2', '학생3'])
print(df)
# 특정 계층의 데이터만 선택
print(df['성적'])
Python
복사
3. 주요 특징과 활용
•
데이터 접근:
◦
loc: 이름으로 데이터 찾기 (예: df.loc['철수', '나이'])
◦
iloc: 위치로 데이터 찾기 (예: df.iloc[0, 1])
•
데이터 조작:
◦
새로운 정보 추가: df['새로운 정보'] = 데이터
◦
정보 삭제: df.drop으로 원하는 행 삭제
# 데이터 접근 예시
df.loc['학생1', '이름'] # '김철수' 반환
df['나이'].mean() # 나이 평균 계산
Python
복사
4. 인덱스와 컬럼의 중요성
•
데이터 정렬: 인덱스나 열을 기준으로 데이터를 정렬할 수 있습니다.
•
데이터 분석: 그룹화, 피벗 테이블 등 고급 분석 작업에 활용됩니다.
•
데이터 통합: 여러 DataFrame을 병합할 때 인덱스나 열을 기준으로 활용됩니다.
인덱스와 컬럼은 pandas DataFrame을 다루는 데 있어 핵심적인 개념으로, 이후 데이터 분석, 처리, 시각화 등 다양한 작업에서 계속해서 활용됩니다. 이러한 개념들은 실제 프로젝트를 진행하면서 더 깊이 있게 다루고 이해하게 될 것입니다.