데이터프레임(DataFrame) 클래스
- 데이터프레임은 2차원 행렬 데이터에 인덱스를 붙인 것
- 따라서, 행 인덱스(row index)와 열 인덱스(column index)가 별도로 존재
data = {'2015' : [990,344,289], '2010': [963,339,263], '2005':[976,351,251]}
columns = ['2015','2010','2005']
index = ['서울','부산','인천']
df = pd.DataFrame(data,index=index,columns=columns)
print(df)
'''
2015 2010 2005
서울 990 963 976
부산 344 339 351
인천 289 263 251
'''
- 리스트 형태로도 가능 - 단, 리스트는 입력 모양 그대로 들어가므로 주의
data = [[990,963,976],[344,339,351],[289,263,251]]
columns = ['2015','2010','2005']
index = ['서울','부산','인천']
df = pd.DataFrame(data,index=index,columns=columns)
print(df)
'''
2015 2010 2005
서울 990 963 976
부산 344 339 351
인천 289 263 251
'''
- 시리즈와 비슷하게 행, 열 인덱스 이름은 .name으로 붙임
df.columns.name='연도'
df.index.name='지역'
print(df)
'''
연도 2015 2010 2005
지역
서울 990 963 976
부산 344 339 351
인천 289 263 251
'''
- 전치(transpose)를 포함하여 numpy의 2차원 배열 속성, 메서드 등을 대부분 지원
print(df.T)
'''
지역 서울 부산 인천
연도
2015 990 344 289
2010 963 339 263
2005 976 351 251
'''
- 열(row) 단위 데이터를 추가, 삭제, 수정 가능
# 추가
df['2005-2010 증가율'] = ((df['2010']-df['2005'])/df['2005']).round(4)
df['2010-2015 증가율'] = ((df['2015']-df['2010'])/df['2010']).round(4)
print(df)
'''
연도 2015 2010 2005 2005-2010 증가율 2010-2015 증가율
지역
서울 990 963 976 -0.0133 0.0280
부산 344 339 351 -0.0342 0.0147
인천 289 263 251 0.0478 0.0989
'''
# 삭제
del df['2005-2010 증가율']
print(df)
'''
연도 2015 2010 2005 2010-2015 증가율
지역
서울 990 963 976 0.0280
부산 344 339 351 0.0147
인천 289 263 251 0.0989
'''
# 수정
df['2010-2015 증가율'] = df['2010-2015 증가율'] * 100
print(df)
'''
연도 2015 2010 2005 2010-2015 증가율
지역
서울 990 963 976 2.80
부산 344 339 351 1.47
인천 289 263 251 9.89
'''
- 열 인덱싱 - 열로 입력 : 시리즈로 반환, 리스트로 입력 : 데이터프레임 형태로 반환
print(df['2010'])
'''
지역
서울 963
부산 339
인천 263
Name: 2010, dtype: int64
'''
print(df[['2010','2015']])
'''
연도 2010 2015
지역
서울 963 990
부산 339 344
인천 263 289
'''
print(df[['2010']]) # 하나로도 데이터프레임 유지 가능
'''
연도 2010
지역
서울 963
부산 339
인천 263
'''
※ 인덱스가 정수형이면 정수 사용가능 ex. df[[2,3]]
- 행 인덱싱 -열 인덱싱이 기본 형태, 행 단위 인덱싱은 항상 슬라이싱을 써야함
print(df[:1])
'''
연도 2015 2010 2005 2010-2015 증가율
지역
서울 990 963 976 2.8
'''
print(df[1:3])
'''
연도 2015 2010 2005 2010-2015 증가율
지역
부산 344 339 351 1.47
인천 289 263 251 9.89
'''
print(df['서울':'부산'])
'''
연도 2015 2010 2005 2010-2015 증가율
지역
서울 990 963 976 2.80
부산 344 339 351 1.47
'''
- 개별 데이터 인덱싱 - [열 라벨][행 라벨]
df['2015']['서울'] # 990