■ Key words
ㆍ데이터 랭글링(Data Wrangling)
ㆍ지도학습(Supervised Machine Learning)을 위한 데이터셋 생성
ㆍ지도학습을 위한 Data Engineering 방법 이해 및 올바른 특성 생성
■ 주요내용
ㆍ데이터 랭글링(Data Wrangling) : 분석을 하거나 모델을 만들기 전에 데이터를 사용하기 쉽게
변형하거나 맵핑하는 과정. 모델링 과정 중 가장 많은 시간 소요.
- wrangling 전, 문제를 정의하고, 데이터를 분석하는 목적을 먼저 세우는 것을 잊지 말자!
- 각 데이터셋의 인덱스를 보고 퍼즐 맞추듯 merge해 나가거나 log 적용 혹은 분류를 위한 데이터
가공을 해야 함
* 원본 데이터셋으로부터 더 좋은 특성(설명력)을 가진 학습데이터를 만들어 내는 것
■ Session note
ㆍ중복되지 않는 값(i. e. product_id, individual_id 등)을 index로 지정하여 merge 등 함수로
feauture engineering을 활용하면 정리가 편하다
ㆍ데이터를 일단 돌려보고 시각활해보기
ㆍmultiple regression
ㆍ영향이 적은 feature 지우고 다시 돌려보기
ㆍ선물 가격 알아보기
ㆍpandas 공부 방법 : 기능 중심으로 기억하기 - 필요한 상황에 찾으면 됨
- indexing / filtering 방법 숙지하기
ㆍextension 설치 시 공식사이트의 installation guide 참조하기
■ 주요함수
ㆍgroupby.get_group
df.groupby(['Gender','Age']).get_group(('Male',20)).Price.sum()
# df.groupby(['column1','column2']).get_group(('value1','value2')).['target_column'].sum()
df[(df['Gender']=='Male') & (df['Age']==20)].groupby(['Gender','Age'])['Price'].sum()[0]
# [0]은 axis=0, 즉 column의 합을 구하게 해주는 지표이다. 안 적으면 오류 천국.
ㆍpandas.cut을 활용하여 연령대 지정 및 column 생성, index로 groupby 분할
age_group = [0,10,20,30,40,50] # 구간 지정; 임의 지정 가능
df['Age Group']=pd.cut(df.Age, age_group) # 지정한 구간으로 분할 범위 임의 지정 가능
price_mean = df['Price'].groupby(df['Age Group']).mean() # 분할한 범위를 index로 하여 groupby 적용
print('연령대별 평균 가격:\n', price_mean)
ㆍgroupby와 count/sum을 활용한 최대 판매수량/최대 매출액 품목 선정하기
# 판매수 상위 Item ID : count로 빈도 산출
top_SA = df['Price'].groupby(df['Item ID']).count().sort_values(ascending=False).head(5)
# 매출 상위 Item IDs : sum으로 총합 산출
top_S = df['Price'].groupby(df['Item ID']).sum().sort_values(ascending=False).head(5)
ㆍgroupby().any()의 활용 / df.value_counts(normalize=True)를 활용한 비율 구하기
train.groupby('order_id')['banana'].any().value_counts(normalize=True)
# order_id로 구분한 후, banana가 포함된 것을 true로 mapping하고,
# value_counts를 하되 normalize하여 비율을 구한다.
df = train.groupby('order_id')['banana'].any().reset_index().
rename(columns={'banana':'reorder_banana'})
# babana가 들어간 행(row)에 true를 적용하는 'reorder_banana'라는 column을 생성한다.
■ Reference
ㆍData Wrangling : https://bkshin.tistory.com/entry/DATA-23-Data-Wrangling
DATA - 23. Data Wrangling (Gathering Data)
우선, 데이터 랭글링(Data Wrangling)이란 무엇인지 알아보겠습니다. 아래는 위키피디아 정의입니다. Data wrangling, sometimes referred to as data munging, is the process of transforming and..
bkshin.tistory.com
ㆍpandas.cut() / qcut() : https://rfriend.tistory.com/404
[Python Pandas] 동일 길이로 나누어서 범주 만들기 pd.cut(), 동일 개수로 나누어서 범주 만들기 pd.qcut(
이번 포스팅에서는 groupby() 를 사용할 때 (1) pd.cut()으로 동일 길이로 나누어서 범주를 만든 후 GroupBy()로 그룹별 통계량 구하기 (2) pd.qcut()으로 동일 개수로 나누어서 범주를 만든 후 GroupBy()로 그
rfriend.tistory.com
ㆍgroupby와 cut의 혼합 : https://stackoverflow.com/questions/51733456/pandas-groupby-get-group-with-interval-date-range
Pandas - groupby - get_group with interval/date range
I'm trying use an interval/date range with the get_group() method. ranges = pd.date_range(start='1/1/1900', periods=12, freq='120M') dates = df.groupby(pd.cut(df['dob'], ranges)) I know typically...
stackoverflow.com
ㆍpandas.cut : https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.cut.html
pandas.cut — pandas 1.2.5 documentation
Indicates whether bins includes the rightmost edge or not. If right == True (the default), then the bins [1, 2, 3, 4] indicate (1,2], (2,3], (3,4]. This argument is ignored when bins is an IntervalIndex.
pandas.pydata.org
ㆍmap과 apply : https://programmerpsy.tistory.com/22
[Pandas 기초]9.Series와 DataFrame에 함수 적용하기
안녕하세요. PSYda입니다. Series와 DataFrame을 다루다 보면 각각의 열/행 데이터에 함수를 일괄적으로 적용해야 할 때가 있습니다. 이번 포스팅에서는 Series와 DataFrame의 요소에 함수를 적용하는 방법
programmerpsy.tistory.com
'Data Science > 2. 기계학습' 카테고리의 다른 글
[n234]Interpreting ML Model (0) | 2021.06.25 |
---|---|
[n233]Feature Importances (0) | 2021.06.24 |
[n231]Choose Your ML Problem (0) | 2021.06.22 |
[n223]Evaluation Metrics for Classification (0) | 2021.06.21 |
[n222]Random Forests (0) | 2021.06.21 |