파이썬/파이썬 심화

[파이썬 심화] 5-2. Pandas 데이터프레임 클래스

  • -
반응형

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

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 구독, 공감 부탁드립니다.