morijwana
수로그
morijwana
전체 방문자
오늘
어제
  • 분류 전체보기
    • 강의노트
    • Machine Learning
      • Pandas
      • NLP
    • Computer Science
      • Linux
      • TIL
    • Development
      • React
      • Swift
      • Javascript
    • 스터디 기록
      • Clean Code
      • 구글 BERT의 정석
      • 개발도서
      • 기타
    • Problem Solving
      • Baekjoon
      • ICPC Sinchon
    • 끄적
      • 끄적끄적
      • 요리왕

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 구글BERT의정석
  • GDSC Sookmyung
  • Bert
  • 데이터사이언스
  • gdsc
  • cs224n
  • 회고
  • ML
  • nlp
  • word2vec
  • Pandas
  • 개발도서
  • Python
  • 프로그래밍언어론
  • Solution Challenge
  • 구부정스터디
  • 자연어처리
  • 백준
  • 프레임워크없는프론트엔드개발
  • 민트하임스터디

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
morijwana

수로그

[kaggle courses] Pandas - Grouping and Sorting
Machine Learning/Pandas

[kaggle courses] Pandas - Grouping and Sorting

2021. 10. 16. 19:08

https://www.kaggle.com/residentmario/grouping-and-sorting

 

그룹별 분석 - groupby, agg

groupby()로 같은 값끼리 하나의 인덱스로 묶을 수 있다.

reviews.groupby('points').points.count()
points
80     397
81     692
      ... 
99      33
100     19
Name: points, Length: 21, dtype: int64

groupby()로 같은 포인트 값을 갖는 와인 리뷰끼리 그룹을 생성한 뒤, points column으로 묶고 count()로 각 그룹별 빈도수를 체크했다. 위 결과는 value_counts()와 동일한 결과이기도 하다.

groupby()는 기준에 따라 같은 값을 갖는 레코드끼리 DataFrame을 구성한다. 이 DataFrame은 apply()를 통해 직접 접근할 수 있다. 아래는 groupby('winery')로 와이너리별로 묶인 DataFrame에 apply()를 사용해 각 와이너리의 첫번째 와인 이름을 가져오는 예시다.

reviews.groupby('winery').apply(lambda df: df.title.iloc[0])
winery
1+1=3                          1+1=3 NV Rosé Sparkling (Cava)
10 Knots                 10 Knots 2010 Viognier (Paso Robles)
                                  ...                        
àMaurice    àMaurice 2013 Fred Estate Syrah (Walla Walla V...
Štoka                         Štoka 2009 Izbrani Teran (Kras)
Length: 16757, dtype: object

 

groupby()에는 단일 column명뿐만 아니라 리스트를 통해 여러개의 column도 전달할 수 있다. 아래는 country와 province로 데이터를 그룹화한 다음, 각 DataFrame에서 가장 높은 point를 가진 와인을 표시하는 예다.

reviews.groupby(['country', 'province']).apply(lambda df: df.loc[df.points.idxmax()])

groupby()와 함께 agg()를 사용하면 여러 개의 함수를 동시에 적용할 수 있다.

reviews.groupby(['country']).price.agg([len, min, max])
        len    min    max
country            
Argentina    3800    4.0    230.0
Armenia    2    14.0    15.0
...    ...    ...    ...
Ukraine    14    6.0    13.0
Uruguay    109    10.0    130.0

 

 

정렬 - sort_values

그룹핑된 데이터는 기본적으로 인덱스 순서에 따라 정렬되어 있다. 우리의 입맛에 맞게 데이터를 정렬하기 위해서는 sort_values() 메서드를 사용하면 된다. 기본적으로 sort_values()는 오름차순으로 정렬하며, 내림차순으로 정렬하고 싶을 때에는 ascending=False 값을 전달하면 된다. 인자로 아무런 값도 전달하지 않을 시에는 인덱스 순서대로 정렬한다. 리스트를 통해 하나 이상의 열을 기준으로 정렬할 수도 있다.

sorted_by_points = reviews.reset_index()

sorted_by_points.sort_values(by='points')
sorted_by_points.sort_values(by='points', ascending=False)
sorted_by_points.sort_values(by=['country', 'points'], ascending=False)
저작자표시 (새창열림)

'Machine Learning > Pandas' 카테고리의 다른 글

[kaggle courses] Pandas - Renaming and Combining  (0) 2021.10.19
[kaggle courses] Pandas - Data Types and Missing Values  (0) 2021.10.18
[kaggle courses] Pandas - Summary Functions and Maps  (0) 2021.10.15
[kaggle courses] Pandas - Indexing, Selecting & Assigning (iloc, loc)  (0) 2021.10.15
[kaggle courses] Pandas - Creating, Reading and Writing  (0) 2021.10.14
    'Machine Learning/Pandas' 카테고리의 다른 글
    • [kaggle courses] Pandas - Renaming and Combining
    • [kaggle courses] Pandas - Data Types and Missing Values
    • [kaggle courses] Pandas - Summary Functions and Maps
    • [kaggle courses] Pandas - Indexing, Selecting & Assigning (iloc, loc)
    morijwana
    morijwana
    행복한 휴학생의 devlog

    티스토리툴바