본문 바로가기
프로그래밍 언어 기본 문법/파이썬

Dataframe - Pandas 자료형 정리

by tryotto 2020. 3. 11.

< Dataframe 기본 정보 >



# Series 자료형과의 관계


     - Dataframe, Series 둘 다 Pandas 에만 존재하는 자료형

     - Dataframe > Series

> Dataframe 의 한 컬럼 == Series




# 기본적인 정보 확인하기


     1) df.shape 


ex) (891, 12)



     2) df.index : 인덱스에 대한 개요를 반환한다


ex) RangeIndex(start=0, stop=891, step=1)



     3) df.column : 컬럼 목록을 반환한다


ex) Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex'])





< 특정 행/컬럼 선택하기 >



# 특정 행(row) 선택하기 


      - 종류 : iloc, loc, ix


1) iloc [ : 6] - 맨 위에서 6개의 행을 가져온다 (key error 생길 일이 없다)

      ex) >>> s.iloc[:6]

49   NaN

48   NaN

47   NaN

46   NaN

45   NaN

1    NaN


2) loc [ : 6 ] - 여러 행들 중에서, '6' 이라는 인덱스를 가진 행까지 가져온다 (없을경우, key error)

     ex) >>> s.loc[:6]

KeyError: 6

     ex) >>> s.loc[:3] # slice up to and including label 3

49   NaN

48   NaN

47   NaN

46   NaN

45   NaN

1    NaN

2    NaN

3    NaN


  3) ix [ : 6]  

    - 데이터프레임의 자료형이 짬뽕되어있을 경우 : iloc 처럼 행동 (맨 위의 6개 행을 가져옴)

    - 데이터프레임의 자료형이 통일되어 있을경우 : loc 처럼 행동 (일치하는 인덱스를 가진 행까지 가져온다)





# 특정 컬럼(column) 선택하기 : 


1) df [ ' ~ ' ]  사용

       ex)   df [ ' A ' ]


      2) df . loc [ : , 'A' ] : 'A' 컬럼의 모든 행을 가져오는 것 -> 즉, 'A' 컬럼 자체를 가져오는 것

       > df. loc [ : , 컬럼 ]  : 기본적으로 (행, 컬럼) 의 순서임을 기억


    >> 주로 많이 사용되는 방식 : 

- 행 선택 :     df. ix [ : ] 

- 컬럼 선택 :   df [ ' ~ ' ]





# 특정 컬럼 & 행 선택하기 :


  ex) df. loc [0]['B']





# 특정 인덱스 접근하기 : ix, iloc


      - ix [7] : 8 9


> 딱 7 에 해당되는 row 를 가져온다

> 단, 만약에 인덱스에 문자가 포함되어있는 경우, iloc 처럼 행동한다



      - iloc [1] : 5 6


> 맨 위에서 1 번째에 해당되는 row 를 가져온다





<인덱스 설정하기>



# 특정 컬럼을 인덱스로 설정하기 :


     - df. set_index ( 'A' ) : 'A' 컬럼을 가져와서, 인덱스 값으로 활용한다


ex)  df = pd.DataFrame({"A":[1,4,7], "B":[2,5,8], "C":[3,6,9]})

                  df = df.set_index('A')

   >> B C

1 2 3

4 5 6

7 8 9







< 추가하기 >



# 특정 행 추가하기 (특정 인덱스) : loc 활용


      - df.loc[2] = [11, 12, 13] 


      > 이렇게만 해도, 인덱스 값이 2 인 하나의 행이 생성된다




# 행 추가하기 (그냥 인덱스 중 맨 뒤에) : df. append( ) 활용


      ex) a = pd.DataFrame(data=[[1,2,3]], columns=[48,49,50])

          df = df.append(a)




# 컬럼 추가하기 : loc 활용하기


      - 방식 : df. loc [ : , '추가하려는 컬럼 이름' ] = ~

    ex) df.loc[:, 'D'] = pd.Series(['5', '6', '7'], index=df.index)






< 삭제하기 >



# 특정 행 삭제


     - 방식 : df. drop( 삭제하고싶은 특정 행의 인덱스 값 )


  ex) df.drop(1)




# 특정 컬럼 삭제


     - 방식 : df. drop( 삭제하고싶은 특정 컬럼의 이름, axix = 1 )


      ex) df.drop('A', axis=1, inplace=True)





# 중복 행 삭제 


     - 방식 : df. reset_index() -> df. drop_duplicates(~). set_index(~) 


         ex)   df = df.reset_index()

        df = df.drop_duplicates(subset='index', keep='last').set_index('index')





< 수정 >



# 주로 사용 가능한 방법 


      - loc 활용 : df. loc[ 특정 행 값 ] [ 특정 컬럼 값 ] = 바꾸고싶은 value 값


    ex) df. loc [ 0  ] [ ' A ' ]  =  0



 - at 활용   :   df. at [ 특정 행 값 , 특정 컬럼 값]


ex) df. at [3, 'Survive' ] =2






< for 반복문 >


# iterrows() 활용


ex)   for row, _ in train.iterrows() :

           if (train.at[row, 'Sex']=='male') and (train.at[row, 'Survived']==1) :

                male_survive_cnt+=1