ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2일차(44 ~ 47)
    책/파이썬 라이브러리를 활용한 데이터 분석 2019. 3. 21. 22:47
    반응형

    책을 펼치자마자 새로운 명령어들이 보입니다.


    Series 는 Dataframe 같이 pandas에서 가장 중요한 자료구조라고 합니다.

    1일차에서 배웠던 표, 스프레드시트와 같은 역할을 하는 Dataframe과는 다르게 Series는 1차원 배열과 같은 자료구조라고 합니다.

    Series에 대한 설명을 보니 파이썬의 List와 Dict를 합친 그런 자료구조인 것 같아 보입니다.


    https://wikidocs.net/4364  링크를 참고하였습니다.



    예시를 보니 리스트와 비슷한 것 같은데, 출력을 해보면 인덱스와 그 인덱스에 해당하는 값을 출력합니다.

    kakao[0]을 입력하면 92600이 출력 됩니다.

    추가로 index에 이름을 붙일 수 있습니다.




    Series안에 index 값을 따로 설정해두면 위 사진과 같이 0,1,2 자리에 날짜가 오게 됩니다.

    kakao2['2016-02-19']를 입력하면 92600이 출력 됩니다.


    기능이 하나 더 있습니다. 서로 다른 Series라도 index 이름이 같으면 합칠 수 있습니다.


    만약 한쪽에는 존재하지 않은 index를 포함시키고 Series를 합치면


    NaN으로 나오게 됩니다.



    이제 dropna 에 대해 알아봅시다. dropna는 fillna와 거의 반대의 역할을 하는 명령어입니다.

    1일차에서 배웠던 fillna는 결측값에 어떠한 값을 집어 넣을 수 있는 명령어이지만, dropna는 결측값이 들어있는 행이나 열을 제거하는 명령어 입니다.


    자세한 내용은 https://rfriend.tistory.com/263 여기에 나와있습니다.

    위 코드에 나온 dropna()는 dropna(axis=0)과 같은 뜻이라고 합니다. dropna(axis=0)은 결측값이 들어있는 행을 삭제하는 명령어 입니다.

    아쉽게도 책에서 사용하는 텍스트 파일에는 결측값이 존재하지 않습니다.


    dropna 왼쪽에 있는 a는 43쪽에 나온 frame['a']의 그 a와 같아 보입니다.


    맨 위의 코드를 정리하자면

    results라는 것은 frame['a']에 결측값이 존재하는 행을 모두 제거한 후, 남은 행들의 가장 첫 번째 값을 저장해 둔 Series이고, results에서 가장 위에 있던 5개를 출력한다고 생각하시면 됩니다.



    ---------------------------------------------------------------------------------------------------------------------------------------------------------



    매 코드를 볼 때마다 새로운 명령어들이 하나씩은 꼭 보입니다.

    이번에는 notnull입니다.

    https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.notnull.html 를 참고하였습니다.


    notnull이라는 것은 잃어버린 값이 있는지 bool형으로 되돌려주는 명령어라고 합니다.

    pandas.notnull, isna, Series.notna, Dataframe.notna, Index.notna 모두 같은 역할을 한다고 하네요.




    where 은 https://rfriend.tistory.com/tag/np.where%28%29 여기에 설명이 잘 나와 있습니다.

    조건에 해당하는 색인을 찾는 명령어라고 하네요.


    contains는 출력을 보니 충분히 알 수 있는 내용입니다. cframe['a']에 'Windows'라는 단어가 포함되어 있다면 'Windows'라고 적고, 'Windows'라는 단어가 없다면 'Not Windows' 라고 적습니다.


    하지만 이것만 봐서는 이해가 가질 않습니다. cframe[:5]를 출력해봅시다.



    a라는 부분중 index 0,2,4에 Windows가 들어가 있습니다. 그외에는 Windows가 없으니 Not Windows라고 해두었군요.



    groupby 명령어는 데이터 그룹화라고 합니다.

    by_tz_os는 cframe에 있는 것들을 그룹화 시키는데, 그룹화시키는 대상은 'tz'이고, operating_system에 나와있는 'windows','not windows'로 나눠 그룹화를 시킨다고 생각하시면 됩니다.


    unstack은 위 사진처럼 tz,not windows,windows에 맞게 정리해준다고 생각하시면 됩니다.

    https://rfriend.tistory.com/276 이 링크에서 보면 쉽게 이해 할 수 있습니다.



    sum이라는 것은 나중에 진도를 나가야 제대로 알 수 있을 것 같습니다.

    (5일차에 해당 내용이 나옵니다. axis 인자를 선택적으로 받을 수 있다고 합니다.)


    argsort는 argsort는 작은 값부터 순서대로 데이터의 위치를 반환하는 명령어라고 합니다.

    용어 설명으로만 보기에는 이해하기가 좀 힘듭니다. 아래 예시를 살펴봅시다.


    당연히 index는 0부터 시작합니다.

    그래서 3, 1, 2, 0 = A[3], A[1], A[2], A[0] = 1, 2, 3, 4 입니다.

    오름차순으로 정렬 후, index를 반환하는 명령어라고 생각하면 편한 것 같습니다.

    indexer가 나온 코드로 설명해보면 indexer[20]이 Africa/Cairo에 해당하는 값, indexer[55]가 America/Argentina/Mendoza에 해당하는 값입니다.



    take 명령어는 array.take(indice)가 있을 때 indice에 나온 값을 index로 생각하여, 그 값을 array의 index에 대입해 반환시킵니다.

    설명하기가 힘듭니다. 예시를 하나 올리겠습니다.




    ==========================================================================================



    이제 그동안 모은 자료를 이용해 시각화 해봅시다.

    만약 누적 막대 그래프로 시각화시킨다면 stacked = True 라고 적으면 됩니다.




    총합을 1로 정규화한 후 표를 만든게 normed_subset이라는 것인데 나중에 가야 알게 될 것 같습니다.

    div는 그냥 나눈다는 의미를 가지고 있는 명령어라고 하네요.



    -------------------------------------------------------------------------------------------------------------------------------------------


    책이 무슨 첫 챕터부터 어려울까 생각했는데 지금보니까 책을 다 배우면 구현할 수 있는 '사례 소개' 였네요 ㅋㅋ


    그래도 나중에 배우나 지금 배우나 각 명령어가 하는 역할을 외우는 일은 똑같은 것 같으니 계속 이어서 글 쓰겠습니다.

    반응형

    ' > 파이썬 라이브러리를 활용한 데이터 분석' 카테고리의 다른 글

    5일차(135 ~ 155)  (0) 2019.03.25
    4일차(115 ~ 134)  (0) 2019.03.25
    3-2일차(55 ~ 70)  (0) 2019.03.23
    3-1일차(47 ~ 54)  (0) 2019.03.22
    1일차(36 ~ 43)  (0) 2019.03.21

    댓글

Designed by Tistory.