ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3-2일차(55 ~ 70)
    책/파이썬 라이브러리를 활용한 데이터 분석 2019. 3. 23. 01:37
    반응형

    주피터 노트북에 데이터를 불러오는데 자꾸 OSError: Initializing from file failed 가 계속 나와서 고생을 좀 했습니다.

    https://stackoverflow.com/questions/50552404/oserror-initializing-from-file-failed-on-csv-in-pandas

    여기에 나와있는 대로 engine = 'python'을 넣어주니까 잘 돌아가네요.



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



    %d, %year이 나오는데 format과 같은 역할을 하나 봅니다. PS할 때 다른 분 코드에서 본 기억이 나네요.



    저처럼 format이 익숙한 분들은 



    위와 같이 코드를 수정해도 무방합니다.


    concat은 Dataframe을 합치는 역할을 합니다.

    ignore_index는 원래 Dataframe들에 있는 행 순서를 무시할지/무시하지 않을지 결정하는 인자 입니다. 여기 나온 데이터는 행 순서를 고려해도 똑같이 나옵니다. 새로운 색인은 range(total_length)로 생성한다고 합니다.

    지금까지 배운 내용으로 봐서는 Dataframe에는 concat을, Series에는 merge를 사용하는 것 같습니다.


    tail은 가장 마지막 행 5개를 보여주는 명령어 인 것 같습니다. names에도 tail을 붙여주니 마지막 5개 행을 보여주네요.

    tail이 있다면 head도 있겠네요.


    astype는 데이터의 형태를 변환하는 명령어 입니다.

    여기에서는 수식에 나누기가 들어가 있기 때문에 자동으로 float형으로 변환해주므로 굳이 astype를 사용하지 않아도 됩니다.


    -astype을 이용해 데이터의 형태를 float로 변환 시킨 경우

    -astype을 사용하지 않은 경우

    allclose는 두 값이 아주 작은 오차 내에서 서로 같은지, 다른지 bool형으로 반환합니다.

    np.allclose(names.groupby(['year','sex']).prop.sum(), 1) 은 names를 연도와 성별로 나눠서 prop를 적용시킨 후, 각 prop이 1이랑 오차 범위 내에서 같은지 확인하는 것 입니다.

    그냥 names.prop.sum()을 하면 모든 연도에서 남,여의 prop을 전부 더하게 되어 260.0000000000007 이 나오게 됩니다.



    여기서 왜 1.0이 나오나면 birth / birth.sum 으로 나눈 것을 다시 더했기 때문입니다.


    name    births   year   sex

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

    mary       10     1800   F

    anna       20     1800   F

    elizabeth  20     1800   F

    emma      25     1800  M

    minnie     25     1800  M


    만약 위와 같은 데이터가 있다고 친다면 prop은 각각 0.2, 0.4, 0.4, 0.5, 0.5일 것입니다.

    In[74] 코드와 같이 prop.sum을 해주면

    year  sex

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

    1880  F      1.0(0.2+0.4+0.4)

            M     1.0(0.5+0.5)

    로 1.0이 나오는 것을 알 수가 있습니다.





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

    61페이지 이름 유행 분석 입니다.



    subplots는 그래프를 한 곳에 전부 구현할 것인지(False), 따로따로 나눠서 구현할 것인지(True)를 결정하는 인자입니다.

    subplots = False로 코드 실행시 아래와 같이 나옵니다.

    (기본 설정은 False이므로 subplots을 적지 않아도 됩니다. grid = True로 해서 선이 보입니다.)


    figsize는 차트의 크기를 수정하는 인자입니다.

    만약 차트의 기본 크기를 설정하려면 matplotlib.pylab 모듈에서 rcParams의 명령어로 수정하면 된다고 하네요.

    plt.rcParams[ 'figure.figsize' ] = (가로, 세로) 로 적으면 됩니다.


    grid 는 가로선, 세로선을 그려주는 인자입니다. 책에서는 선이 없지만, 아래의 그래프를 보면 가로선, 세로선이 있는 것을 보실 수 있습니다.

    가로선, 세로선이 말고 단어가 따로 있는 것으로 기억하는데, 지금 생각하려고 하니 기억이 나지 않네요.



    xticks, yticks 는 x축, y축의 tick 값 범위와 몇 개의 tick으로 구성할 것 인지 정해주는 인자입니다.


    cumsum은 누적 합을 해주는 명령어입니다.

    만약 [1,2,3,4] 라는 list에 cumsum을 사용하면 [1,3,6,10] 으로 바뀝니다.

    [1,2,3],[4,5,6] 으로 list가 나눠져 있어도 l두 개의 list를 합쳐서 [1,3,6,10,15,21]로 바뀌게 됩니다.


    searchsorted는 numpy에 있는 이진 탐색 함수 명령어라고 합니다. 파이썬 기본 내장 모듈인 bisect과는 다르게 만약 반환하는 값이 배열이라면 배열을 반환해준다고 하네요.


    65페이지 그래프를 보니 약 1985년부터 다양한 이름이 급격하게 나타났습니다. 흥미롭네요.


    map은 파이썬 기본 명령어 map과 기능은 같지만 pandas의 map은 Series에서 사용되는 것이라 index도 같이 나오게 됩니다.

    https://sacko.tistory.com/52

    위 링크에 들어가서 글에 나온 예시를 읽으시면 더욱 쉽게 이해가 갑니다.


    reindex는 index를 수정하는 명령어 입니다.

    https://rfriend.tistory.com/255

    위 링크에서 자세하게 나와있습니다.



    ax는 검색해봐도 나오지 않네요.. 아마 subplot에서 두 개의 그래프로 나눴기 때문에 axes[0]이 첫 번째 그래프, axes[1]이 두 번째 그래프를 말하는게 아닐까 생각합니다.


    legend는 만약 나타낼 그래프가 여러 개 있을 때, subplot을 설정해주지 않으면 여러 개의 그래프를 한 곳에 다 그리게 됩니다.

    그때 각 그래프의 색깔은 다르게 보여도 어떤 색깔이 어떤 그래프인지 모르기 때문에 그래프에 라벨을 달고, 라벨명을 출력해줍니다.

    기본 설정으로는 True가 되어있기 때문에 legend=False를 해보면 아래 사진과 같이 라벨명이 사라지는 것을 볼 수 있습니다.



    69쪽에 나오는 unique는 유일한 값을 찾는 명령어라고 합니다.

    유일한 값이라고 해서 중복 값의 반대라고 생각하면 안됩니다.

    만약 A = [1,1,1,2,2,3,3,3,3] 이라는 리스트가 있다면 A.unique()는 [1,2,3]을 출력합니다.

    중복 값 제거해주는 set과 비슷한 역할을 한다고 생각하시면 됩니다.

    특이한 점은 결측값도 포함 한다는 것 입니다. 만약 B=[1,1,NaN,2] 가 있을 경우 B.unique()는 [1,NaN,2]를 출력합니다.


    isin은 X.isin(List)라는 명령어가 있다면 X안에서 List에 있는 요소가 들어있는지 확인하는 명령어입니다.

    들어있는지 없는지 확인하는 것이므로 bool형으로 반환합니다.

    https://3months.tistory.com/283 여기에 잘 설명되어 있습니다.




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



    드디어 2장이 끝났습니다.

    이 책을 다 배우고 나면 2장에 나온 내용처럼 자유자재로 구사할 수 있게 된다는 것인데 매우 기대가 됩니다.

    반응형

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

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

    댓글

Designed by Tistory.