본문 바로가기

부스트캠프 AI Tech/[Week1] Python

[Week1] Python - pandas

*pandas   -> Python계의 엑셀!

 

  • 구조화된 데이터의 처리를 지원하는 Python 라이브러리.
  • panel data -> pandas
  • 고성능 array계산 라이브러리인 numpy와 통합하여, 강력한 "스프레드시트"처리 기능을 제공
  • 인덱싱, 연산용 함수, 전처리 함수 등을 제공
  • 데이터 처리 및 통계 분석을 위해 사용

 

 

 

 

*Data loading

  • ex1) df_data = pd.read_csv(data_url , sep='\s+' , header = None)
  •       #csv 타입 데이터 로드, separate은 regex로 빈공간으로 지정하고, Column은 없음
  • ex2) df_data.head()    # 첫 5줄 출력 , integer로 몇 줄 출력할지 넣어줄 수 있음

 

 

*Series

  • Data Table 전체를 포함하는 Object를 DataFrame이라 함
  • DataFrame중 하나의 Column에 해당하는 데이터의 모음 Object를 Series라 함

  • numpy와 큰 차이점은 index를 문자로도 지정해줄수 있음
  • Subclass of ndarray
  • Duplicates are possible
  • dict로 데이터를 넣으면 key값이 index가 됨
  • ex1) dict_data_1 = {"a":1 , "b":2, "c" :3, "d":4, "e":5}
  •        indexes = ["a", "b", "c", "d", "e", "f", "g", "h"]
  •        series_obj_1 = Series(dict_data_1, index=indexes)   #index 값을 기준으로 series 생성
  •        print(series_obj_1)

 

 

*DataFrame

  • Series를 모아서 만든 DataTable = 기본 2차원
  • Series와 동일하게 index 값을 기준으로 데이터 생성
  • Column을 지정하여 테이블 생성 가능

 

*DataFrame indexing

  • loc - index location     #index의 값을 넣어줘야함 ex) index가 문자면 문자를 넣어줌
  • iloc - index position    #index의 위치를 넣어줘야함

 

*DataFrame handling

  • column에 새로운 데이터 할당 가능
  • ex1) df.debt = df.age > 40   #df라는 dataframe에 debt라는 새로운 column을 boolean 형태로 넣어줌
  • df.T   -> transpose
  • df.values  -> 값 출력
  • df.to_csv()  -> csv 변환
  • del df["debt"]    or   df.drop("debt, axis=1)    -> 'debt' column 삭제  #del은 메모리에서 삭제, drop은 df에 변화X

 

*Selection

  • df["account"].head(3)                          #한개의 column선택시
  • df[["account", "street", "state"]].head(3)   #1개 이상의 column 선택
  • df[:3]                        #index번호를 넣어주기도 함  => 헷갈릴수도? , index가 문자열이면 데이터가 안뽑힘
  • df[[0,1,2]]                  #index를 list형태로 넣어주기도 함
  • boolean index 가능
  • df.index = df["account"]   #index 변경 가능

 

*Data selectionbasic, loc, iloc

  • basic :  df[["name", "street"]][:2]                       #Column과 index number
  • loc : df.loc[[211829,3290563], ["name", "street"]]  #Column과 index number
  • iloc : df.iloc[:2,:2]                                          #Column number와 index number

 

*Drop

  • df.drop([0,1,2,3])            #한 개 이상의 index number로 drop
  • df.drop("city" , axis=1)    #axis 지정으로 축을 기준으로 drop -> column 중에 "city"
  • df.drop("city" , axis=1 , inplace=True)  # inplace=True로 설정하면 df가 업데이트가 됨

 

*Series operation

  • index 기준으로 연산수행 겹치는 index가 없을경우 NaN값 반환

 

*DataFrame operation

  • column과 index를 모두 고려하여 겹치는 경우가 없으면 NaN값 반환
  • df1.add(df2, fill_value=0)   # fill_value=0 은 겹치는 경우가 없을때 0값을 더해서 반환
  • df.add(s2, axis=0)        # Series + dataframe 수행할땐 그냥 operation을 수행하지 않고, axis를 지정. broadcasting

 

*lambda , map ,apply

  • map, replace를 활용하여 series를 업데이트 가능
  • apply : map과 달리, series 전체에 해당 함수 적용
  • ex1) df_info = df[["earn" , "height", "age"]]
  •        f = lambda x : x.max() - x.min()
  •        df_info.apply(f)    # 각 column 별로 결과값 반환. sum, mena, std 등 내장 연산 함수 사용 가능
  • applymap : series단위가 아닌 모든 element 단위로 함수를 적용함
  • ex2)  f = lambda x : x//2
  •        df_info.applymap(f).head(5)

 

*pandas built-in functions

  • describe : Numeric type 데이터의 요약 정보를 보여줌   
  • unique : series data의 유일한 값을 list를 반환함
  • sum : 기본적인 column 또는 row 값의 연산을 지원
  • isunall : column 또는 row 값의 NaN index 반환
  • sort_values : column 값을 기준으로 데이터를 sorting
  • Correlation & Covariance : 상관계수와 공분산을 구하는 함수 (corr , cov , corrwith)

 

*Groupby 1

  • SQL groupby 명령어와 같음
  • split -> apply -> combine

  • ex1) df.groupby("Team")["Points"].sum()              #Team 컬럼 기준으로 Points의 값들을 다 합침
  • ex2) df.groupby(["Team", "Year"])["Points"].sum()   #Team 컬럼 기준으로 먼저 묶고, Year 컬럼 기준으로 묶음

*Hierarchical index

  • Groupby 명령의 결과물도 결국은 dataframe
  • 두 개의 column으로 groupby를 할 경우, index가 두개 생성
  • unstack()   , reset_index()      # 그룹 데이터를 matrix로 풀어줌
  • sum(level = )    # Series data 이므로 level 지정 연산 가능 

 

 

*Groupby 2

  • Groupby에 의해 Split된 상태를 추출 가능함
  • ex) grouped = df.groupby("Team")
         for name, group in grouped:
             print(name)
             print(group)
  • get_group("Devils")  :  특정 key값을 가진 그룹의 정보만 추출 가능
  • 추출된 group 정보에는 세 가지 유형의 apply가 가능

'부스트캠프 AI Tech > [Week1] Python' 카테고리의 다른 글

[Week1] Python - numpy  (0) 2021.08.06
[Week1] Python - pythonic code  (0) 2021.08.04
[Week1] Python - Data Structure  (0) 2021.08.04