• dataFrame은 인덱스와 컬럼인자를 주지 않으면, index와 columns는 0부터 시작한다.
    여기서는 numpy의 랜덤함수인 np.random.rand( 행,렬)로 랜덤 array를 만들어서 대입해보자.
    image
    이 때, index에 대해서는 pd.date_range( “ yyyymmdd”, periods = 6) 함수를 사용해보자.
    pandas에서 제공하는 Datetime64라는 데이터형으로 구성된 인덱스( DatatimeIndex)를 생성할 때 사용되는 함수다.
    뒤에 periods =6 은 입력날 날자로부터 6일에 대한 index를 생성한다. 즉, 6개 행을 만든다.
    image


결측값, 이상치(NaN) 조작하기

pandas를 이용해서 dataset를 가져올 때, NaN과 같이 범주에서 벋어난 값이 존재 할 수 있다. 이러한 값을 결측값(missing value), 이상치(out lier)라고 한다. 이 결측값, 이상치를 제거하거나 새로운 값으로 대입하는 방법을 알아보자.

  • 먼저, 새로운 열F를 만들고, 값을 입력하는 과정에서  하나의 성분으로 np.nan을 이용해보자. 성분에 NaN대입하는 numpy의 함수다
    image
  • 이제 우리는 NaN이라 표기된 값만 골라내고,해당 행을 제거해야한다.
    (행제거는 밑에어 df.drop()으로 따로 배운다. 여기서는 NaN을 포함하는 행을 제거하는 방법을 배운다.)
    이럴 때, df.dropna( how = “any” ) 함수를 이용해야한다. 각 행들 중 NaN을 포함하는 행들을 제거한 df를 가져올 수 있다.
    이 때,  any 행의 성분에 NaN이 하나라도 있으면 그 행을 제거 라는 뜻이다. 
    만약, how의 인자에 “all”이 있다면, 행의 성분이 모두 NaN일 때 제거한다는 뜻이다. 지금은 모두 NaN인 행이 없으니 그대로나올 것이다
    image
  • 이제 NaN이 포함된 행을 제거하는 것이 아니라, NaN에 다른 값을 대입해보자.
    이럴 땐, df.dropna(how=" ")가 아닌 df.fillna(value=5.0)함수를 사용해야한다.
    NaN 성분들에 일괄적으로 value값을 대입한다.
    image
  • NaN이 포함되어 있는 데이터에 대한 boolean마스크를 생성할 수 있다. NaN인 성분만 True를 뽑아내주는 df.isnull()함수를 사용해준다.
    image
    *****이제 이러한 마스크를 이용해서 loc함수의 행index자리에 넣어 NaN을 포함한 행만 뽑아낼 수 있다.*****

기존에 강의에서는 np.array로 생성한 array에 대해
[ 전체기준-> 열안의 특성성분과 조건문을 통해 마스크생성 (for문을 이용할 경우, 중복없는기준열생성) -> 행index자리에 넣기 ]
에 넣기 의 과정으로 뽑아냈다면,

  • 여기 NaN를 뽑아내기위해서, 전체기준열을 뽑기전 df.isnull()함수를 먼저 사용해야하므로 전체 데이터에 대한 마스크를 먼저 생성한다
    [  is.null()로 전체마스크 –>  전체 마스크 중 df[ “ 전체기준” ]으로 직접제시 –> loc함수의 행index자리에 넣기 ]
    df.loc[    df.isnull()["F"] ,    :]
    image


행 또는 열의 삭제

index를 이용해서 행을 삭제하는 방법도 있다.


  • df.drop()함수를 이용해서 2개이상의 열을 삭제할 때도, 열명은 리스트의 형태로 작성한 뒤  콤마, axis=1를 넣어주면 된다.
    df.drop( [ "B","F"], axis=1)
    image


+ Recent posts