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
- D2E8DA72
- split
- TabPy
- concat
- 태블로
- random.uniform
- 함수
- trim
- 정제
- 데이터전처리
- 이전날짜제거
- 전처리
- Tableau
- mysql
- Def
- SQL
- 오류
- 살려줘
- 태블로퍼블릭
- 외부접속허용
- Join
- vlookup
- 에러
- 파이썬
- 북마크
- safe mode 해제
- 아나콘다
- Delete
- 맵차트
- putty
Archives
- Today
- Total
무던히 하다보면 느는
[python] 통계 관련 함수 정리 본문
01. 이상치 제거 후 평균 계산
[설명]
이상치란 ? 관측된 데이터의 일반적인 범위에서 많이 벗어난 값, 즉 너무 작은 값이나 너무 큰 값.
이상치가 모델링 및 의사결정에 미칠 수 있기 때문에 기준을 정해서 이상치를 처리하는 것은 필수
01 Z-score 방법
- 평균값 기반으로 이상치를 탐지하는 방법
- 평균, 표준편차를 이용해서 특정 데이터가 평균값으로부터 얼마나 멀리 떨어져 있는지 계산
- 특정 임계값을 넘어가면 이상치로 판단
02 IQR 방법
- 중앙값 기반으로 이상치를 탐지하는 법
- 사분위수, IQR을 이용해서 특정 데이터가 중앙값으로부터 얼마나 멀리 떨어져 있는지 계산
- 박스플롯의 최솟값, 최댓값을 넘어가면 이상치로 판단
[문제]
주어진 거래 데이터 리스트에서
Z-score 기준으로 이상치(절대값 2.0 이상)를 제거한 후,
나머지 데이터의 평균을 계산하시오.
from scipy.stats import zscore
import numpy as np
amounts = np.array([100,110,120,130,140,10000])
zscores = zscore(amounts)
filtered = amounts[np.abs(zscores) < 2]
mean_result = filtered.mean()
mean_result
02. 그룹별 표준편차
std_by_category = transactions.groupby('category')['amount'].std()
03. IQR 기반 이상값 개수
values = [10, 12, 14, 15, 16, 17, 18, 100, 105]
q1 = np.percentile(values, 25)
q3 = np.percentile(values, 75)
iqr = q3 - q1
lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr
outliers = [v for v in values if v < lower or v > upper]
outlier_count = len(outliers)
q1 : 14
q3 : 18
iqr : 4
lower : 8
upper : 24
outliers = [100, 105], 즉 len(outliers) = 2
04. rolling window 평균 변화율 ★★
1분 단위 매출 데이터가 주어질 때, 3분 이동평균 기준으로 직전 시점 대비 변화율(%) 을 구하시옹
(단, NaN은 제외) 다시 풀기
sales = [100, 150, 200, 250, 300, 350, 400]
s = pd.Series(sales)
rolling_avg = s.rolling(window=3).mean()
per_change = rolling_avg.pct_change().dropna() * 100
s.rolling(window=3)
그리고 .pct_change().dropna()*100
05. 상관계수 기반 유사 사용자 추출
correlations = ratings.corr(method="pearson")["user1"].drop("user1")
most_similar_user = correlations.idxmax()
most_similar_user
결측값 채우기 : 'one' 열
one_mean = df['one'].mean(axis=0)
df['one'] = df['one'].fillna(value=one_mean)
df
'코딩테스트' 카테고리의 다른 글
[mysql] Investigating a Drop in User Engagement (0) | 2025.04.24 |
---|---|
[mysql] Validating A/B Test Result (0) | 2025.04.24 |
[python] leetcode 집계함수 문제 (1) | 2025.04.18 |
[python] 집계 기본 함수 정리 (2) (0) | 2025.04.17 |
[python] 집계 기본 함수 정리 (0) | 2025.04.17 |