[Pandas] 유용한 pandas 기능 4 가지 (컬럼 순서 변경, insert, loc, Groupby)

반응형

From Pixabay Cimberley's Image

안녕하세요 

저번에 포스팅에서 pydataset라이브러리를 통해 dataset을 가져오는 것을 정리해보았습니다.

2020/07/23 - [python] - pydataset 이란? 700개 이상의 테스트 데이터 library

 

pydataset 이란? 700개 이상의 테스트 데이터 library

pydataset은 python에서 빠르게 다양한 종류의 dataset에 접근해서 dataframe을 불러오는 라이브러리 입니다. 현재 기준 757개의 데이터셋이 존재합니다. python으로 dataframe을 다룰땐 주로 주피터 노트북에�

bio-info.tistory.com

이번엔 iris dataset을 이용하여 유용하고 실무에서 많이 쓰는 pandas 기능 4가지를 통해 데이터 정제를 해보겠습니다.

4 가지 기능을 설명하고, 실습 문제를 해결해보겠습니다.

Contents

    1. 4가지 기능

     

    1) 컬럼 순서 변경 기능

    a. to_numpy()를 이용하는 경우

    to_numpy를 이용하면 column을 ndarray 타입으로 변경이 가능합니다.

    ndarray의 장점 중 하나는 ndarray[[인덱스]]와 같이 인덱스 순서를 직관적으로 바꿀 수 있다는 점입니다.

    아래 2번째 셀을 보면 아래와 같은 코드가 있습니다.

    col = col[[1,0,2]]

    위 코드의 의미는 col의 인덱스를 [1,0,2] 순서로 바꾸겠다는 의미입니다.

    이를 통해 컬럼 순서를 직관적으로 변경할 수 있습니다.

    인덱스를 사용한 컬럼 순서 변경

     

    b. 직접 바꾸는 방법

    df.columns.tolist()를 실행하면 컬럼이 리스트 형태로 예쁘게 출력됩니다.

    이를 복사해서 순서를 직접 변경한뒤 df[[변경한 순서]] 와 같이사용하면 컬럼순서가 변경됩니다.

     

    아래 그림 처럼 ['species', 'sepal_width', 'sepal_length']를 복사해서 직접 iris [내부]의 내부에 붙여 넣기 한 뒤, 순서를 'species'가 제일 앞에 오게 바꿨습니다.

    컬럼 이름을 사용한 컬럼 순서 변경

    사실 아래처럼 컬럼중 일부만 선택해도 되고, 다음에 코드를 봤을 때도 바로 어떤 컬럼을 썼는지 알 수 있기 때문에 컬럼순서 변경에는 직접 바꾸는 방법을 더 많이 씁니다.

    컬럼 일부만 선택

     

    2) insert 함수: 열 삽입 기능

    열 삽입은 크게 2가지 방법으로 insert 함수를 쓰기도 하고, 안 쓰기도 합니다.

     

    a. insert 함수

    iris.insert(loc=0,column='Classification',value='normal')
    • loc몇번째 열로 삽입할 건지입니다.  loc=0이면 0번째 열로 삽입한다는 의미입니다.
    • column삽입할 열의 제목을 뭐로 할지입니다. column='Classification'이면 열 제목을 'Classification'으로 한다는 것입니다.
    • value는 삽입할 열의 값입니다. value='normal'처럼 단일 값을 넣으면, 열의 모든 값이 'normal'로 되지만, 행 개수만큼의 값을 리스트 등 일차원 배열 형태로 넣으면 개별적인 값으로 넣을 수도 있습니다.

    insert : 열 삽입 

     

    b. df['test'] = value

    이 방식으로 열을 삽입할때는 항상 제일 오른쪽 열로 삽입됩니다.

    df['test'] = 'Tong!'

    위와 같이 'test'컬럼에 단일 값을 넣으면 아래의 빨간 박스처럼 모두 그 값으로 들어갑니다.

    동일 값으로 열 채우기

     

    df['test2'] = [1,2,3,4,5]

    위처럼, 행 개수(5개)에 맞춰서 iterator(리스트 등의 일차원 배열 형태)로 값을 넣으면, 아래처럼 순차적으로 값이 들어갑니다.

    배열을 열에 넣기

     

    3) loc: 원하는 조건의 데이터 찾고, 값 변경하기 기능

    A. 조건 설정하기

    먼저 df.mean()을 하면 df의 모든 열에대해 평균이 구해집니다. df.mean().열이름 처럼쓰면 해당 열의 평균값만 딱 나오게 됩니다.

     

    조건 설정은 df의 컬럼에 대해 True or False로 나올 수 있는 조건을 부여하면 됩니다.

    예를 들어, df.A > 10df의 A 컬럼중 10보다 큰 수라는 조건입니다.

     

    조건끼리는 서로 and(& 연산자 이용)와 or( | 연산자 이용)을 사용하여 풍부한 조건을 줄 수 있습니다.

    아래의 condition을 보면 length_condition조건과 width_condition조건을 모두 만족하는 경우임을 알 수 있습니다.

    condition 사용 예시

     

    B. loc를 이용해 특정 조건에서 값 변경

    loc를 이용하면 조건을 만족하는 열에 특정 값을 넣을 수 있습니다.

    df.loc[ 조건, '열 이름' ] = value

    위처럼 조건에 맞는 행에 대해 '열 이름'열에 value를 넣을 수 있습니다. 

    아래에서는 condition 조건을 만족하면 Classification 열에 'big' 값을 넣겠다는 코드입니다.

    loc 기능

     

    4) Groupby: 특정 조건으로 그룹화하고, 통계치 구하기 기능

    Groupby는 특정 열의 값들로 그룹화하고, 집계 함수를 적용할 수 있는 함수입니다.

    groupby에 대해 잘 설명한 사이트가 있어서 공유드립니다.

    https://rfriend.tistory.com/392

     

    [Python pandas] 여러개의 함수를 적용하여 GroupBy 집계하기 : grouped.agg()

    지난번 포스팅에서는 Python pandas의 GroupBy 집계 메소드와 함수에 대해서 알아보았습니다. 이번 포스팅에서는 Python pandas의 GroupBy 집계를 할 때 grouped.agg() 를 사용하여 다수의 함수를 적용하는 몇 ��

    rfriend.tistory.com

     

    아래의 예시를 보면 Classification이 'big'인 조건에서 'species'를 기준으로 그룹화하여 집계 함수를 적용합니다.

    집계 함수는 'species' 컬럼에 대해선 개수를 세는 count함수를 적용하고

    'sepla_width'와 'sepal_length'에 ['평균' , '표준편차', '최댓값', '최솟값']을 구하는 집계 함수를 동시에 적용했습니다.

    groupby 기능

     

    2. 실습 문제

    실습용 iris 데이터

    위와 같은 iris 데이터가 있을 때, 

    sepal_width와 sepal_length가 모두 평균 초과인 데이터에 대해서,

    species의 데이터 개수와 sepal_width, sepal_length의 평균, 표준편차, 최댓값, 최솟값을 한 테이블에 보이시오.

    최종 출력은 아래와 같으면 됩니다.

    결과 화면

    * 문제 csv 파일

    iris.csv
    0.00MB

    풀이 깃허브: https://github.com/netsus/pandas_practice/blob/master/Pandas_Practice_1_column_order_insert_loc_groupby.ipynb

     

    netsus/pandas_practice

    Pandas examples in practice. Contribute to netsus/pandas_practice development by creating an account on GitHub.

    github.com

    풀이는 유용한 기능을 모두 써보는 취지에서 작성하였기 때문에, 가장 효율적인 답은 아닙니다.

     

    이번에는 pandas의 유용하고 실무에서 많이 쓰이는 4가지 기능(컬럼 순서 변경, insert, loc, Groupby)에 대해 알아보았습니다.

    다음에 더 좋은 글로 찾아오겠습니다.
    읽어주셔서 감사합니다.

     

    반응형

    댓글

    Designed by JB FACTORY