[부트캠프 #1] Pandas basics

스르륵·2021년 3월 8일
0

부트캠프 정리하기

목록 보기
1/12
post-custom-banner

파이썬의 데이터프레임 라이브러리 pandas 사용법에 대해 정리

애매하게 알고있던 것만 따로 정리한다.

참고 영상

1. groupby()

동일한 그룹끼리 묶어서 연산해주는 연산자다

df.groupby('label') --> 객체

그룹별로 데이터를 집계, 요약하는 방법

df.groupby('label').mean()

df의 'label'그룹을 모두 모아서 평균을 구한다!

  • 여러 그룹을 동시에 선택하려면 리스트로 넣어라

    df.groupby(['city', 'label']).mean()
  • 각각 다른 함수를 적용하고싶다

    df.groupby('city').agg({'price':np.mean, 'quantity':np.sum})
  • groupby는 객체를 반환하므로 반복문을 통해 각각 그룹별로 호출할 수 있음

    for g in df.groupby('city'):
        print(g)
  • get_group('그룹이름')을 통해 원하는 그룹만 가져올 수 있음

2. pd.merge()

SQL의 join과 유사하다고 생각한다.

공식 Document

# pd.merge(x, y)로도 가능
x.merge(y, 
       how="inner",
       on=None,  # 기준이 될 key
       left_on=None, # left DataFrame의 변수를 key로
       right_on=None,# right DataFrame의 변수를 key로
       left_index=False, # left DataFrame의 index를 key로
       right_index=False,# right DataFrame의 index를 key로
       sort=True,  # merge 후 정렬
       suffixes=('_x', '_y')) # 중복되는 변수 이름에 접미사 부여
  • how : left, right, inner, outer

3. pd.pivot_table() / pd.melt()

피벗테이블을 만드는 pd.pivot_table()과 tidy 데이터로 만든는 pd.melt()

pivot_table

공식 Document

pd.pivot_table(data,  # DataFrame
               index, # 행 위치에 들어갈 열
               values,# 열 위치에 들어갈 열
               aggfunc='mean') # 데이터 집계 함수
  • aggfunc 종류는 다양하게 사용가능하다
    • mean, sum...

melt

pivot table이 필요한 자료만 뽑아 새로운 표를 만든다면, melt()는 모든 자료를 한칸에 하나씩 모두 나타낸다.

pivot과 melt는 비슷한데 다르다. 헷갈리지말자!

pd.melt(data, 
        id_vars=['id1', 'id2', ...], # 풀어놓을 열 이름
        var_name, 					 # 새로 생길 표에서의 id_vars 이름
        value_name)					 # 새로 생길 표에서 values의 이름

4. 그 외 Pandas Tips!

  1. pd.read_clipboard()

    엑셀이나 스프레드시트에서 복사한 표를 DataFrame형태로 그대로 불러온다!

    다만 같은 운영체제 내에서만 작동한다고 한다. 서버에서 작업해서 로컬과 서버의 운영체제가 다르거나 colab을 이용하면 사용하지 못한다. 로컬에서 작업을 잘 안하는 나는 (하더라도 wsl을 쓰는데) 사용하기 힘들 것 같다

  1. styling

    jupyter notebook에서만 잘 보이는 것 같다. (html/css를 사용하기 때문인가)

    표에 색깔을 넣거나, 셀에 차트를 그린다거나 interacticve 하게 만들 수 있는데, 필요하면 찾아서 쓰자...

profile
기록하는 블로그
post-custom-banner

0개의 댓글