https://www.kaggle.com/residentmario/summary-functions-and-maps
0. 데이터의 개요 알아보기
Pandas는 데이터를 재구조화하여 보여주는 간단한 개요 함수들을 제공한다. describe()
메서드같은 경우는 주어진 열에 대해 높은 수준의 정보를 제공한다. describe()
는 데이터의 타입마다 각기 다른 식의 개요를 보여준다. 여기서 사용하는 예시 DataFrame인 reviews는 아래와 같다.
reviews.points.describe()
count 129971.000000
mean 88.447138
...
75% 91.000000
max 100.000000
Name: points, Length: 8, dtype: float64
위의 결과는 데이터 타입이 numerical인 경우이며, 아래는 데이터 타입이 string인 경우의 결과다.
reviews.taster_name.describe()
count 103727
unique 19
top Roger Voss
freq 25514
Name: taster_name, dtype: object
describe()
로 모든 개요 정보를 뭉텅이로 얻을 수도 있지만, 아래의 예제처럼 DataFrame이나 Series에서 특정한 통계값만 얻을 수도 있다.
reviews.points.mean() # 평균
reviews.points.unique() # 고유값들의 리스트
reviews.points.value_counts() # 고유값들의 출현 빈도
1. 데이터를 매핑하는 방법
map
은 수학에서 채용한 용어로, 한 집합에서 다른 집합으로 "매핑"시키는 함수를 가리킨다. 데이터 사이언스에서 기존 데이터를 다른 방식으로 표현하고 싶을 때, 지금과 다른 포맷으로 변환해야 할 때 map
을 사용한다.
매핑 방법에는 2가지가 있으며, 첫번째 방법은 map()
함수를 사용하는 방법이다. map()
은 단일 Series에 사용할 수 있으며, 아래는 map()
을 points 속성(reviews.points)에 사용하여 points 속성을 'points 값과 평균의 오차'로 갱신하는 예시다.
reviews_points_mean = reviews.points.mean()
reviews.points.map(lambda p: p - review_points_mean)
0 -1.447138
1 -1.447138
...
129969 1.552862
129970 1.552862
Name: points, Length: 129971, dtype: float64
단일 Series의 값만 바꾸는 map()
과는 다르게, apply()
는 사용자 정의 메서드를 각 행마다 적용하여 DataFrame 전체를 변형할 수 있다.
def remain_points(row):
row.points -= review_points_mean
return row
reviews.apply(remean_points, axis='columns')
호출 시 axis='index'
값을 주면 행마다 적용하는 대신 열마다 적용하게 된다.
2. Pandas 내장 매핑 연산자를 사용한 매핑 방법
Pandas는 다양한 매핑 연산자를 내장 기능으로 제공한다. 아래는 내장 매핑 연산자를 이용해 points 속성을 재정의하는 더 빠른 방법이다.
review_points_mean = reviews.points.mean()
reviews.points - review_points_mean
0 -1.447138
1 -1.447138
...
129969 1.552862
129970 1.552862
Name: points, Length: 129971, dtype: float64
Pandas는 길이가 같은 두 Series 사이의 매핑 연산도 가능하다.
reviews.country + " - " + reviews.region_1
0 Italy - Etna
1 NaN
...
129969 France - Alsace
129970 France - Alsace
Length: 129971, dtype: object
이런 식의 연산은 Pandas에 내장된 속도 향상을 위한 매커니즘을 따르기 때문에 map()
, apply()
보다 빠르다. 다른 기본 파이썬 연산자(<
, >
, ==
등등)도 같은 방식으로 작동한다.
하지만 얘네들은 map(),
apply()
보다 유연하게 새용하기는 힘드므로, 상황에 맞춰 필요한 연산자나 메서드를 찾아 쓰도록 하자.
'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 - Grouping and Sorting (0) | 2021.10.16 |
[kaggle courses] Pandas - Indexing, Selecting & Assigning (iloc, loc) (0) | 2021.10.15 |
[kaggle courses] Pandas - Creating, Reading and Writing (0) | 2021.10.14 |