개요
2022.12.10 - [Python] Pandas - DataFrame 1에 이어서 DataFrame에 대해 정리한다.
열 인덱싱
DataFrame은 column label을 키로 하고, column series를 값으로 하는 딕셔너리와 비슷하다. 따라서 column label을 사용해 인덱싱할 수 있다. 한 개의 컬럼을 지정하면 Series가, 리스트로 두 개 이상의 컬럼을 지정하면 DataFrame이 반환된다.
data = {
"2015": [9904312, 3448737, 2890451, 2466052],
"2010": [9631482, 3393191, 2632035, 2431774],
"2005": [9762546, 3512547, 2517680, 2456016],
"2000": [9853972, 3655437, 2466338, 2473990],
"지역": ["수도권", "경상권", "수도권", "경상권"],
"2010-2015 증가율": [0.0283, 0.0163, 0.0982, 0.0141]
}
columns = ["지역", "2015", "2010", "2005", "2000", "2010-2015 증가율"]
index = ["서울", "부산", "인천", "대구"]
df = pd.DataFrame(data, index=index, columns=columns)
df['지역']
type(df['지역'])
df[["2005",'2000']]
# 실행 결과
서울 수도권
부산 경상권
인천 수도권
대구 경상권
Name: 지역, dtype: object
pandas.core.series.Series
2005 2000
서울 9762546 9853972
부산 3512547 3655437
인천 2517680 2466338
대구 2456016 2473990
Dataframe 자료형을 유지하면서 열 하나만 지정하고 싶을 때는 원소가 하나인 리스트로 인덱싱 한다.
df[["2005"]]
type(df[["2005"]])
# 실행 결과
2005
서울 9762546
부산 3512547
인천 2517680
대구 2456016
pandas.core.frame.DataFrame
또한 열 인덱스가 문자열인 경우에는 순서를 나타내는 정수 인덱스를 사용하여 인덱싱할 수 없다.
행 인덱싱
행 단위로 인덱싱을 할 때에는 슬라이싱을 해야 한다. 인덱스 값이 문자열이어도 된다.
df[2:3]
df['부산':'인천']
# 실행 결과'
지역 2015 2010 2005 2000 2010-2015 증가율
인천 수도권 2890451 2632035 2517680 2466338 0.0982
지역 2015 2010 2005 2000 2010-2015 증가율
부산 경상권 3448737 3393191 3512547 3655437 0.0163
인천 수도권 2890451 2632035 2517680 2466338 0.0982
개별 데이터 인덱싱
DataFrame에서 열 라벨로 시리즈를 인덱싱하면인덱싱 하면 시리즈가 되는데, 이 시리즈를 행 라벨로 인덱싱 하면 개별 데이터가 나온다.
df['2015']['인천']
# 실행 결과
2890451
요약
지금까지의 데이터프레임 인덱싱을 정리하면 다음과 같다.
인덱싱 값 | 가능 | 결과 | 자료형 | 추가 |
라벨 | O | 열 | 시리즈 | |
라벨 리스트 | O | 열 | 데이터프레임 | |
인덱스 데이터 | X | 열 라벨이 정수인 경우 라벨 인덱싱으로 처리 | ||
인덱스 데이터 슬라이스 | O | 행 | 데이터프레임 |
참고 문서