[Pandas] Index
Pandas Index, pandas.Index, 인덱스, RangeIndex, MultiIndex
정의
pandas.Index 는 행 / 열 라벨을 보관하는 객체. Pandas Series / Pandas DataFrame 의 모든 라벨은 Index. 정렬, 정합성, 빠른 lookup 의 기반.
기본은 RangeIndex (0, 1, 2, …) 지만 set_index 로 임의 열을 index 로 승격 가능.
종류
| 종류 | 용도 |
|---|---|
| RangeIndex | 기본 0-based 정수 |
| Int64Index | 임의 정수 |
| Index (object) | 문자열 / 혼합 타입 |
| DatetimeIndex | 시계열 |
| PeriodIndex | 기간 (2024-Q1) |
| TimedeltaIndex | 시간 차이 |
| Pandas MultiIndex | 계층형 (multi-level) |
| CategoricalIndex | 범주형 |
| IntervalIndex | 구간 (bin) |
자주 쓰는 동작
set_index / reset_index
python
import pandas as pd
df = pd.DataFrame({'name': ['A', 'B', 'C'], 'age': [10, 20, 30]})
df2 = df.set_index('name')
print(df2)
print('---')
print(df2.reset_index()) 결과
age
name
A 10
B 20
C 30
---
name age
0 A 10
1 B 20
2 C 30정렬
df.sort_index() # index 기준 정렬
df.sort_index(axis=1) # 열 이름 기준 정렬
df.reindex(['c', 'a', 'b']) # 명시적 재배치 (없으면 NaN)
이름 부여
df.index.name = 'id'
df.columns.name = 'feature'
정합성 자동 정렬
a = pd.Series([1, 2, 3], index=['x', 'y', 'z'])
b = pd.Series([10, 20], index=['y', 'z'])
print(a + b)
# x NaN
# y 12.0
# z 23.0
연산 시 같은 index 끼리만 매칭. 없는 곳은 NaN.
고유성
기본 Index 는 중복 허용. 그러나 lookup 효율과 의미상 unique 권장.
df.index.is_unique # True / False
df.index.duplicated() # 중복 위치 boolean
MultiIndex (간단 소개)
df = pd.DataFrame(
{'sales': [100, 200, 150, 300]},
index=pd.MultiIndex.from_tuples(
[('Q1', 'Seoul'), ('Q1', 'Busan'),
('Q2', 'Seoul'), ('Q2', 'Busan')],
names=['quarter', 'city']
)
)
자세한 내용은 Pandas MultiIndex 참고.
자주 만나는 함정
1. 정수 index 의 .loc
s = pd.Series([10, 20, 30], index=[5, 6, 7])
s.loc[5] # label 5 → 10
s.iloc[5] # IndexError (위치 5 없음)
s[5] # label 5 → 10 (deprecated 경고 가능)
label 과 위치를 명확히 구분.
2. set_index 후 원본 컬럼 사라짐
df2 = df.set_index('name')
# df2 에는 'name' 컬럼이 없음, df2.index 가 'name'
원래대로 돌리려면 reset_index().
참고
이 글의 용어 (3개)
- [Pandas] DataFramepandas
- 정의 은 2차원 레이블 테이블. 각 열이 , 모든 열이 같은 (행 라벨) 를 공유. SQL 테이블 / Excel 시트 / R data.frame 의 Python 대응체. 생성 <…
- [Pandas] MultiIndexpandas
- 정의 MultiIndex 는 여러 단계 (level) 의 라벨로 구성된 . SQL 의 composite key 와 비슷, 그룹화된 데이터를 자연스럽게 표현. 생성 인덱싱 <Cod…
- [Pandas] Seriespandas
- 정의 는 1차원 레이블 배열. NumPy + 의 결합. 의 한 열이 곧 Series. 핵심 속성 | 속성 | 의미 | |:---|:---| | | numpy array | | |…
💬 댓글