Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- pl300
- 모두의구글애널리틱스4
- gru
- data
- 인턴일기
- 오블완
- microsoft pl-300
- ga4
- GA4챌린지
- PowerBI
- POWER BI
- LSTM
- 태블로
- 데이터분석
- 파워비아이
- 티스토리챌린지
- 태블로기초
- 태블로입문
- 구글애널리틱스
- pl-300
- 파워BI
- 신입일기
- RNN
- NLP
- 길벗출판사
- microsoft power bi
Archives
- Today
- Total
수영장의 수영_데이터 분석 블로그
[빅분기 실기] 작업형 1유형 - 종합정리 본문
1. Scaling
1) min-max scaling
# min-max scaling
import pandas as pd
from sklearn.preprocessing import minmax_scale
df = pd.read_csv('./dataset.csv')
# 변환 원하는 열 선택
df['열이름'] = minmax_scale(df['열이름'])
# 조건에 맞는 행 걸러내기
sum(df['열이름']>0.5) # true를 더하는 방식
len(df[df['열이름']>0.5]) # 데이터 수의 길이를 구하는 방식
2) standard scaling
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df['열'] = scaler.fit_transform(df[['열']]) # 여기서는 왜 [[ 두개지??
2. 이상치
1) IQR
import pandas as pd
import numpy as np
df = pd.read_csv('./train.csv')
q1 = np.percentile(df['열이름'], 25)
q3 = np.percentile(df['열이름'], 75)
IQR = q3 - q1
outdata1 = df[df['열이름'] < (q1 - 1.5 * IQR)
outdata2 = df[df['열이름'] > (q3 + 1.5 * IQR)
len(outdata1), len(outdata2)
# 이상치 중에서 특정 조건 행만 걸러내기
sum(outdata1['열이름2'] == 'female'))
sum(outdata2['열이름2'] == 'female'))
2) 음수, 소수
basic1 데이터 중 'age'컬럼 이상치를 제거하라
import pandas as pd
import numpy as np
df = pd.read_csv('./train.csv')
# 이제 이 위에는 생략
# 음수 제거하기
df = df[~df['age'] <=0]
# 소수 제거하기
df = df[(df['age'] == round(df['age'],0))]
3. 결측치
1. 제거하기
# 결측치가 있는 행 제거
df = df[~df['f1'].isnull()]
# 그룹화한 합계
df1 = df.groupby(['인덱스로 들어갈 열1','인덱스로 들어갈 열2']).sum()
# 조건 값만 출력
df1.iloc[0]['열이름'] # => 0번째 행에서 '열이름' 열의 값만 출력한다
2. 대체하기 - 최빈값
# 조건 데이터행만 추출
df = df[df['열'] > 조건숫자]
# 최빈값으로 채우기
df['열'] = df['열'].fillna(df['열'].mode())
3. 대체하기 - 뒤의 값
df = df.fillna(method = 'bfill')
4. 조건
1) 조건에 맞는 데이터로만 계산하기
# 내림차순 정렬
df = df.sort_values('기준 열', ascending = False).reset_index(drop=True)
# 상위 몇개만 가져오기
df = df[:20] # 위의 20행만 가져옴
# 결측처리
df['열이름'] = df['열이름'].fillna(df['열이름'].median()) # 중앙값으로 채우기 .mean() 평균 fillna(0) 0
# 조건 만들기
cond = (df['열'] == '조건 문자열') & (df['열2'] > 조건 숫자)
# 조건 적용된 행의 평균
df[cond]['income'].mean() # 조건 만족하는 행들의 income(수입) 평균 계산
2) 조건에 맞게 replace하기
# 조건 데이터 추려내기
df[df['열이름'] == '조건문자열']
# replace
df['열이름'] = df['열이름'].replace('원래문자열', '바꿀문자열')
# 두 가지 이상의 조건 적용해 대체하기
df[(df['열1'] == '조건문자열') & (df['열2'] < 조건숫자)] # 조건 만듦
df[(df['열1'] == '조건문자열') & (df['열2'] < 조건숫자)]['age'].max() # 조건 충족 데이터 중 최대 age값 출력
3) 조건에 맞게 병합하기
df1 = pd.read_csv('~~.csv')
df2 = pd.read_csv('~~.csv')
# 병합하기
df = pd.merge(left=df1, right=df2) # 조건 달 수도 있음 how ='left', on ='공통열'
# 결측치 제거
df = df.dropna(subset=['열이름']) #'열이름' 열에서 빈 값인 행 삭제하기
df = df.reset_index() #인덱스 리셋
df.iloc[:20]['열이름'].sum() # => 상위 20개 행만 선택한 후 -> '열이름'의 값들 합계 구하기
4) 여러 개의 조건 적용
city와 f4를 기준으로 f5의 평균값을 구한 다음, f5를 기준으로 상위 7개 값을 모두 더해 출력하시오
# groupby 해서 평균 구하기 => city, f4가 각각 왼쪽에 인덱스로 들어가서 그룹화
# ex. 경기-20대, 경기-30대, 서울-40대 등등
df = df.groupby(['city', 'f4'])[['f5']].mean()
# 상위 7개
df = df.sort_values('f5', ascending=False).reset_index()
df = df.head(7)
# 합계
df['f5'].sum()
5. 통계
1. 상관계수
# 상관계수
df_corr = df.corr()
mask = df_corr.isin([1]) # 자기자신과의 상관계수는 1임 -> 삭제 필요
df_corr = df_corr[~mask]
# 상관계수의 최대 최소 구하기
df_corr_max = abs(df_corr['열이름']).max()
df_corr_min = abs(df_corr['열이름']).min()
2. 분산
# 주어진 데이터 셋에서 f2가 0값인 데이터를 age를 기준으로 오름차순 정렬하고
# 앞에서 부터 20개의 데이터를 추출한 후
# f1 결측치(최소값)를 채우기 전과 후의 분산 차이를 계산하시오 (소수점 둘째 자리까지)
cond = (df['열'] == 0) # '열'에서 0값인 데이터를 찾는다
# 오름차순으로 정렬한 뒤 인덱스 재조정
df = df[cond].sort_values('age', ascending=True).reset_index(drop=True)
df = df[:20]
# 결측치를 채우기 전과 후 - 분산 비교
var1 = df['f1'].var()
df['f1'] = df['f1'].fillna(df['f1'].min())
var2 = df['f1'].var()
# 둘 차이 계산
round(var1 - var2, 2) # 2는 소수점 둘째자리까지 나타내겠다~
3. 왜도와 첨도
'SalePrice'컬럼의 왜도와 첨도를 구한 값과,
'SalePrice'컬럼을 스케일링(log1p)로 변환한 이후
왜도와 첨도를 구해 모두 더한 다음 소수점 2째자리까지 출력하시오
# 왜도와 첨도 구하기
s1 = df['SalePrice'].skew()
k1 = df['SalePrice'].kurt()
# 로그 변환 후 왜도와 첨도
df['SalePrice'] = np.log1p(df['SalePrice'])
s2 = df['SalePrice'].skew()
k2 = df['SalePrice'].kurt()
# 모두 더해 2자리까지
round(s1+s2+k1+k2, 2)
4. 기타 계산 함수
df.sum()
df.cumsum()
df.std()
np.abs(A - B)
'자격증 > 빅데이터분석기사' 카테고리의 다른 글
[빅분기 실기] 작업형 1유형 - 2회 기출 예제 풀기 (0) | 2021.12.03 |
---|---|
[빅분기 실기] 작업형 제2유형 - 전처리 종합코드 (0) | 2021.12.02 |
[빅분기 실기] 하루에 끝내는 작업형 1유형 - 크롤링 (0) | 2021.11.28 |
[빅분기 실기] 하루에 끝내는 작업형 1유형 - 검정 (0) | 2021.11.28 |
[빅분기 실기] 하루에 끝내는 작업형 1유형 - 그래프 (0) | 2021.11.28 |