데이터 전처리에는 두 단계가 있음
1. 데이터 구조 만들기
2. 모델링을 위한 전처리
tip.columns = ['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size']
tip.rename(columns={'total_bill_amount': 'total_bill',
'male_female': 'sex',
'smoke_yes_no': 'smoker',
'week_name': 'day',
'dinner_lunch': 'time'}, inplace=True)
# final_amt 열 추가
tip['final_amt'] = tip['total_bill'] + tip['tip']
# 열 하나 삭제
tip.drop('final_amt', axis=1, inplace=True)
# 열 두 개 삭제
tip.drop(['div_tb', 'day'], axis=1, inplace=True)
# tip[‘tip’] 의 모든 값을 0으로 바꾸기
tip[‘tip’] = 0
# tip[‘tip’] 의 값이 10보다 작을 경우, 0으로 바꾸기
tip.loc[tip[‘tip’] < 10, ‘tip’] = 0
# tip[‘tip’] 의 값이 10보다 작을 경우 0, 아니면 1로 바꾸기
tip[‘tip’] = np.where(tip[‘tip’] < 10, 0, 1)
# Male -> 1, Female -> 0
tip['sex'] = tip['sex'].map({'Male': 1, 'Female': 0})
# 3 등분으로 분할후 a,b,c로 이름 붙이기기
age_group = pd.cut(data2['Age'], 3, labels = ['a','b','c'])
age_group.value_counts()
# 3 등분으로 분할
age_group = pd.cut(data2['Age'], 3)
age_group.value_counts()
# 나이를 다음 구간으로 분할합니다.
# 'young' : =< 40
# 'junior' : 40 < =< 50
# 'senior' : 50 <
age_group = pd.cut(data2['Age'], bins =[0, 40, 50, 100] , labels = ['young','junior','senior'])
범주 이름 X
소괄호 : = 포함 X
대괄호 : 포함 O
즉, 32<Age<=46
무한대 표현
pd.concat(objs , axis , join)
매핑기준: 인덱스(행), 칼럼이름(열)
outer : 모든 행과 열 합치기 (기본 값)
inner : 같은 행과 열만 합치기
pd.merge( leftDf , rightDf , how , on )
매핑기준 : 특정 칼럼(key)의 값 기준으로 결합
# 특정 컬럼 지정 , inner 조인
pd.merge(df1, df2, how = 'inner', on = 'A')
# 컬럼 기준 자동, left 조인
pd.merge(df1, df2, how = 'left')
dataframe.pivot( index= , columns= , values= )
# 1) 매장1의 일별 카테고리별 판매량을 집계
temp = pd.merge(sales1, products)
temp2 = temp.groupby(['Date', 'Category'], as_index = False)['Qty'].sum()
# 2) pivot
temp3 = temp2.pivot(index='Category',columns= 'Date' ,values='Qty')
temp3
# sns.heatmap으로 시각화 할 수도 있습니다!
plt.figure(figsize = (20, 6))
sns.heatmap(temp3)
plt.show()
Data 모델링 분석 : Data의 반복되는 패턴을 찾는 것.
pd.to_datetime(날짜데이터, format = '입력되는 날짜 형식')
: str 타입의 데이터 날짜 타입으로 변환data['Date'] = pd.to_datetime(data['Date'])
# 전날 매출액 열을 추가합시다.
temp['Amt_lag'] = temp['Amt'].shift() #default = 1
# 전전날 매출액 열을 추가.
temp['Amt_lag2'] = temp['Amt'].shift(2) # 2행 shift
# 다음날 매출액 열을 추가합시다.
temp['Amt_lag_1'] = temp['Amt'].shift(-1)
# 7일 이동평균 매출액을 구해 봅시다.
temp['Amt_MA7_1'] = temp['Amt'].rolling(7).mean()
temp['Amt_MA7_2'] = temp['Amt'].rolling(7, min_periods = 1).mean()
temp.head(10)
# 7일 이동평균 매출액을 구해 봅시다.
temp['Amt_D1'] = temp['Amt'].diff()
temp['Amt_D2'] = temp['Amt'].diff(2) #2칸 전 뺴기
temp.head(10)