ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #5: KT_AIVLE_SCHOOL : DX_4th : 2주차 : 데이터 다듬기
    KT_AIVLE_SCHOOL_DX_4th 2023. 8. 26. 22:16

    # 4 에서는  <데이터 다루기> 강의는 무엇인지, 어떤 것을 배우는지 알아보았다.

    https://datawithu.tistory.com/6   

     

    #5에서는 데이터 다듬기에서는 파이썬언어로 무엇을 배우는 지 알아보자 


    데이분석의 가장 기본이 되는 데이터 다듬기에서는  분석에 앞서  크게 2가지 패키지(package) /라이브러리에 대해서 배운다.

    - 넘파이 (Numpy) 

    - 판다스 (Pandas)


    1. 넘파이 (Numpy) 

    주요 함수와 사용법등은  ( -> 넘파이 관련 함수 링크 자리 예정) 

    * Numpy란 Numerical Python의 줄임말로

    기본 리스트(값의 모음) 개념을 넘어서 수학적 계산이 필요해 만들어진 파이썬의 라이브러리이다.

    벡터와 행렬 연산을 위한 편리한 기능을 제공하며  pandas와 matplotlib의 기반이다.

     

    1 )  Array : 배열 : 행렬의 기본개념 

    넘파이의 기본은 array를 이해하는 것이다. 

    Array 배열은 쉽게 말하면 한 줄, 한 묶음 단위로 생각하면 편할 것 같다. 

    이때, 리스트 [  ]의 형태로 묶음단위를 나타내며, data type은   numpy.narray 라고 표기된다.

    위의 표와 같이 2차원 array 의 경우  행렬 에서  (3, 4)로  행 3,  열 4를 갖는다. 

    기본적을 행단위가 분석시에는 좀 더 의미를 갖는 경우가 많은 것 같다.

    =>  차후 데이터 분석시 행 / 인스턴스 로  의미단위가 되기 떄문이다.

     

    2)  1~ N차원 

    차원을 늘려갈 때는 리스트[ ] 의  [ ]를 추가하는 방식으로 배열 차원을 높이면 된다.

    # 1차원  리스트 형태
    a = np.array([1,2,3,4])
    
    # 2 차원  리스트 형태
    b = np.array( [ [1,2], [3,4] ] )

    Rank3이상, 즉 3차원이상부터는 (axis0,axis1,axis2)    axis0,  axis1, axis2 에서   

    axis0는 2차원의 depth로 이해하고  axis1과 axis2를 2차원 표로 생각하면 편한데,

    이유는 단위수가 (axis0)이고, 분석 대상이 2차원의 표이기 때문이다. 

    3 ) 넘파이에서 사용되는 주요 메소드와 함수

    import numpy as np 라이브러리 불러오기

    dtype :데이터 타입

    ndim : 차원수

    shape : 행열모양  : 몇 행 몇 열

    np.array() : 자료형(문자,딕셔너리,집합)을 배열로

    np.reshape() :  행열의 배열 재구성

    np.sum() : 합

    np.mean() : 평균

    np.std() : 표준편차

    np.where(조건문, 참값, 거짓)  :  

     

    4 ) 인덱싱 슬라이싱

    Numpy.img 참/ google.img

    인덱싱 [  행 ,  열 ]

    슬라이싱 [   어디부터  :  어디까지,   :   ]

    기본적으로 파이썬의 인덱스는 0 1 2 3 4 5 6 ......

     

    5) 배열 연산 : 사칙연산

    Numpy. img 참고

    np.add() : + : 더하기

    np.subtract() : - :  빼기

    np.multiply() : * : 곱하기

    np.divdie() : / :  나누기

    np.power()  : ** : 제곱

    np.sqrt()  : 제곱근 루트

    scikit-learn.img 참고


    2.판다스  (Pandas)

    주요 함수와 사용법등은  ( -> 판다스 관련 함수 링크 자리 예정)

     

    1)  데이터 프레임 

    판다스의 핵심은 데이터프레임(DataFrame)을 이해하는 것이다.

    이때 넘파이 배열과 다른 점은,  

    데이터 프레임은 여러 열에 대하여 인덱스외의 열 이름이 따로 있다는 것이다. => 열에 대한 속성 조회가 쉬워진다.

    연도(year)같은 의미있는 값 열이  인덱스가 되면 분석이 용이해지는 장점도 있다.

    또한 한 줄을 우리는 시리즈 라고 부른다.

     

    https://www.coursera.org/learn/python-data-analysis

    2)  판다스 주요 메소드 & 함수

    import pandas as pd 로 라이브러리 불러오기

    pd.read_csv() : csv 파일 읽어오기

    df = pd.DataFrame(data=, index=, columns= )

    df.head() : 상위 행 조회

    df.tail() : 하위 행 조회

    df.set_index('열이름', inplace=True) : 열 하나를 인덱스로 지정 가능

    df.reset_index(drop=False, inplace=True) : drop=True는 기존 인덱스열을 버림

    df.rename(columns={ '기존' : ' 새로' ) : 열 이름 변경 

     

    3)  판다스 데이터 탐색시 사용하는 메소드 & 속성

    df.info() : 인덱스, 열 , 값 개수, 데이터 형식, 널NaN갯수

    df.describe() : 기초 통계량 : 평균, 표준편차, 4분위수 

    shape : 행  열  형태

    index : 인덱스 정보

    values : 값들 확인

    columns : 열들 확인

    dtypes : 데이터들 형식

    https://www.coursera.org/learn/python-data-analysis

     

    4)  데이터 정렬 & 고유값 확인

    sort_index( ascending= ) : 인덱스 기준 정렬

    sort_values(by=기준열, ascending=)  # 리스트형태로 [ 열1, 열2] 등에 대해 기준열를 순차적으로 정렬가능

    unique() : 고유값 확인

    value_counts() : 고유값과 갯수 확인,   dropna=True옵션을 넣으면, Nan값제외

     mode() : 고유값중 최빈값

    집계 : sum(),  mean(),  max(), min(), count() 

     

    5) 데이터 프레임 조회 방식

    loc ; location을 의미, 특정 열이름 등으로 조회하는 방식   

    iloc : integer location를 의미, iloc의 경우 숫자(01234 인덱스)로 조회하는 방식

     

    df.loc[ 행 ,   열 ]  이 기본 형태임을 기억하자

    이때 열부분은 생략 가능하지만 행부분을 생략이 안된다

    그래서 결국은 df.loc[ 행에 대한 조건  ]  만 남게 된다.

     

    시리즈  : 데이터프레임에서 한 줄을 꺼내오면 나오는 자료구조

    넘파이에 배열이 있다면,  데이터프레임은 시리즈이며  리스트[  ] 형태로 나타난다.

    다만 시리즈는 딱 한줄, 2줄이상은 데이터 프레임이 된다. 

     

    6) 알아두면 유용한 조건 조회 

    *isin(리스트) 

    df.loc[  df['열']. isin([ a,b ,c ])      ] :  abc가 있는 데이터만을 조건으로 조회

    *between(값1, 값2) : 범위 지정 조회  

     

    7) 데이터 프레임 집계- groupby

    df.groupby( '~별로 묶을 열', as_index=False    )[[ '알고싶은 열' ]]. 집계함수()     

    - mean()/sum()/count()등의 집계함수를 꼭 써줘야 된다.

    - as_index =False  옵션을 사용하길 이강래 강사님은 권장해주셨는데,

    향후 시각화 라이브러리에서의 편의성이 있어서 그런다고 하셨다.

    - 집계함수들을 한번에 쓰고 싶다면  .agg(['sum', 'mean',....]) 메소드를 이용하면 된다.

    - agg( { total_bill':'mean ', tip':'sum}) 이런식으로 딕셔너리 형태로도 지정할 수도 있다.

     

    8) 데이터프레임 변경

    이름변경 : df.rename( columns={ : } )

    열추가 :  df['New']  =  df[ '열']  + df[ '열'] 

    지정위치열추가 :  df.insert( 위치번호,   df['New'],    df[ '열']  + df[ '열']    )

    열 삭제  : df.drop(  '삭제 열' , axis=1 )

    범주형 값 변경 :  df.map(   { '전' : '후'} )

    범주형으로 변경 : cut() qcut()

    - cut() : 등급범위별

    - qcut() : 데이터 갯수별

     

    9)  결측치

    * 결측치 확인 / 유효값 확인

    df.isna().sum()  /     notna()     

    df.info()

    * 결측치 제거

    df.dropna( subset=['특정열'], axis=0)   

    #axis=1은 열을 의미

    * 결측치 채우기

    df.fillna(  채울값 )

    df.fillna(method='ffill)   #앞의값으로   'bfill'은 뒤의 값으로 채우기

    df.interpolate(method='liner') 선행보간법으로 채우기

     

    10) 가변수화 

    = > 범주형데이터를 독립된 열으로 변환하여 컴터가 계산을 쉽게

    pd.get_dummies(df, columns=,  drop_first=True)

     

    11) 데이터 프레임 합치기

    .concat( [, , ],  join='outer', axis=1       )

    .merge( df1, df2,  on='기준열',  how='outer'    )#딱 2개씩만 합치기 가능

     

    이처럼 데이터다듬기에는 많은...것들을 알아보았다. 

     

    이렇게 데이터 다루기와 다듬기 세션이 끝났다. 

    다음편은 대망의 미니 프로젝트로 돌아오겠다.  

Designed by Tistory.