Python/NumPy | Pandas

[Python] Pandas - DataFrame 2

비번변경 2022. 12. 11. 01:16

개요

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 데이터프레임  

 

 

참고 문서

데이터 사이언스 스쿨 - 4.1 판다스 패키지의 소개