2022년 3월 27일 일요일

[왕초보 파이썬 - pandas] 딕셔너리로부터 데이터프레임 만들기

구글에서 조금만 검색을 해 보면 파이썬 초보자를 위한 학습 자료가 넘쳐난다. 더 이상 늦을 수는 없다는 비장한 각오로 파이썬 공부를 시작하면서 왜 블로그에 글을 남기는가? 이것은 '나를 위한 메모'라는 성격이 강한 글이다. 일기는 일기장에 쓰는 것이 맞지만, 여기는 나의 개인 블로그이므로 나의 기억을 돕기 위해서 기록하는 것이니 별 문제가 없을 것이다.

numpy ndarray를 만들어서 데이터프레임을 만들 때에는 특별히 지정하지 않는 경우 행(row) 단위로 결합이 이루어지는 것 같다. pandas.DataFrame 공식 문서(링크)에서 'Construct DataFrame from numpy ndarray' 항목을 찾아보라.

이번에는 4명의 성적 자료를 담은 간단한 데이터프레임을 만들어 보자. 과목은 3가지이다. 각 과목에 대해 개인별 시험 점수를 담은 딕셔너리를 만들고, 이를 pandas의 DataFrame 함수로 합치려 한다. 열 단위로 합칠 것인가, 혹은 행 단위로 합칠 것인가? 기본 동작은 ndarray를 합칠 때와는 달리 열 단위로 합쳐진다. 행 단위로 합치려면 pandas.DataFrame.from_dict(... orient='index'...)를 사용해야 한다.

>>> import pandas as pd
>>> from pandas import DataFrame
>>> data = {'eng':[10, 30, 50, 70], 'kor':[20, 40, 60, 80], 'math':[90, 50, 20, 70]}
>>> names = ['Kim', 'Park', 'Lee', 'Choi']
>>> df = pd.DataFrame(data, index=names)
>>> df
      eng  kor  math
Kim    10   20    90
Park   30   40    50
Lee    50   60    20
Choi   70   80    70
>>> df_2 = pd.DataFrame.from_dict(data, orient='index', columns=names)
>>> df_2
      Kim  Park  Lee  Choi
eng    10    30   50    70
kor    20    40   60    80
math   90    50   20    70

속성(attribute)과 메쏘드를 구별하는 것도 아직 어려운데 데이터 파일을 어느 정도 주무를 수 있게 익히려면 아직 갈 길이 멀었다. 머릿속에서 R 문법과 뒤죽박죽이 되면 어쩐다?


나는 왜 파이썬을 배우려 하는가?

데이터를 분석하고 시각화하기 위해 R을 어느 정도 수준(?)으로 쓰고는 있다. R이 data wrangle, visualization 및 reporting에는 정말 도움이 되는 도구라는 데에는 아무도 이견이 없을 것이다. 하지만 점차 필수가 되어 가는 기계 학습을 공부하기 위해서는 파이썬 환경에서 scikit learn이나 tensorflow를 다루어야만 한다. 또한 생명정보학 분석용으로 공개된 수많은 파이썬 애플리케이션을 제대로 쓰려면 단지 '설치와 활용'을 잘 하는 것으로는 부족하다. 그래서 파이썬이 필요하다.

다행히도 파이썬과 R은 궁합이 잘 맞는다. 다음과 같은 글이 공연히 희망을 갖게 한다. 


"The bottom line is that knowing both R and Python makes you SUPER PRODUCTIVE".

댓글 없음: