본문 바로가기

프로그래밍

pandas의 DataFrame개체 다루기

2차원형태의 자료구조를 만들 때 유용한 자료구조
 
0,1,2를 행
a,b,c를 열로 구성해보자
 
a
b
c
0
a0
b0
c0
1
a1
b1
c1
2
a2
b2
c2
 
위 같은 형태의 자료구조를 만들 때 사용하면 편하다.
우선 딕셔너리를 만든다.
 
from pandas import DataFrame
 
dict_temp = {'a': ['a0', 'a1', 'a2'],
            'b':['b0', 'b1', 'b2'],
            'c':['c0', 'c1', 'c2']}
 
df_temp = DataFrame(dict_temp)
 
print(df_temp)

 
위같은 결과가 나온다.
배열의 index에 따라 자동으로 번호가 할당되었다.
 
열에 접근할 때는 원래 python에서 하는 딕셔너리 접근 방식과 동일하다.
 
df_temp['a']

 
DataFrame은 개체 생성 시에 columns을 통해 컬럼 순서를 변경할 수 있다. 
 
dict_temp = {'a': ['a0', 'a1', 'a2'],
            'b':['b0', 'b1', 'b2'],
            'c':['c0', 'c1', 'c2']}
 
df_temp = DataFrame(dict_temp, columns=['b', 'a', 'c'])
 
print(df_temp)

 
추가로 index에 자동으로 붙는 숫자를 Series 개체처럼 임의로 수정할 수 있다.
이는 생성 시에 index를 통해 가능하다.

dict_temp = {'a': ['a0', 'a1', 'a2'],
            'b':['b0', 'b1', 'b2'],
            'c':['c0', 'c1', 'c2']}
 
df_temp = DataFrame(dict_temp, index =['00','01','02'])
 
print(df_temp)
 
 
이같이 변경할 수 있는 이유는 DataFrame 개체에서 column들이 Series로 구성되어 있기 때문이다.
Dictionary -> Series -> DataFrame
 
dict_temp = {'a': ['a0', 'a1', 'a2'],
            'b':['b0', 'b1', 'b2'],
            'c':['c0', 'c1', 'c2']}
 
df_temp = DataFrame(dict_temp, index =['00','01','02'])
 
print('df_temp["a"] type = %s' % type(df_temp['a']))

 
이번에는 열이아닌 행에 접근해보자. 행은 DataFrame.loc[행 이름] 으로 접근한다.
DataFrame에서 컬럼에 접근한 것처럼 접근하려고 하면 에러가 발생한다.
print(df_temp['00']))

dict_temp = {'a': ['a0', 'a1', 'a2'],
            'b':['b0', 'b1', 'b2'],
            'c':['c0', 'c1', 'c2']}
 
df_temp = DataFrame(dict_temp, index =['00','01','02'])
 
print(df_temp.loc['00']))
print('df_temp["00"] type = %s' % type(df_temp.loc['00']))
 
 
위 같이 접근해서 얻은 행 데이터도 열과 마찬가지로 Series 개체이다.
 
DataFrame의 행에 대한 정보는 .index
DataFrame의 열에 대한 정보는 .columns 
를 통해 얻을 수 있다.
 
print(df_temp.index)
print(df_temp.columns)