Home Statistics
Post
Cancel

Statistics

Story 1. Cloud, A programmable Resource Management

1
A programmable Resource Management
  • programmable : Virtualization, Automation
    • Elastic (Scale-out)
    • Available (HA)
    • Resilient (회복성)
  • Resource : computing, Networ, Pass, DB … -> service
  • Management : platform

DevOps : 기존에는 개발과 운영에 주안점이 있었다면 요즘은… DevSecOps -> AIDevSecOps -> MLOps -> NoOps … FinOps : 관리비용최적화(안쓸때는 끄는 등 최소과금 형태로 관리)

향후에는 AWS -> 부채가 심하다, 서비스가 너무 세분화되어있다. vs Azure -> 아직까지는 워크로드가 AWS로부터 많이 넘어오지 않았음


연속형 변수 요약

(1) 중심(center) : 평균, 중위수, 절사평균 - 중위수와 절사폄균은 극단치의 영향을 덜 받으므로 평균의 단점을 보완한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pandas as pd
apt = pd.read_excel('data/아파트_실거래가_서울.xlsx') 
apt.shape # data frame의 행열의 수 

apt.columns
# 변수명 변경 
apt.rename(columns = {'전용면적(㎡)' : '면적', '거래금액(만원)' : '가격'}, inplace = True)
apt.columns
apt.head()

# 평균
apt.가격.mean()

# 중위수
apt.가격.median()

# 기초통계량 
tb = apt.단가.describe()

from scipy import stats
stats.trim_mean(apt.단가, 0.2)    # 절사평균의 경우는 pandas에서 지원하지 않으므로 scipy 로 계산한다.

(2) 산포도(spread) : 범위, 분산, 표준편차, 사분위수 - 산포도는 그 값 자체보다는 비슷한 그룹과의 비교를 통해 크고 작음을 판단할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 표준편차 
apt.단가.std()

# 범위 (최대값 - 최소값)
tb['max'] - tb['min']

# 사분위수 범위 
Q1 = tb['25%']
Q3 = tb['75%']
IQR = Q3 - Q1
print('IQR = ', IQR)  # IQR(InterQuartile Range)값 자체만으로 spread를 판단하기는 어렵고 비교군 간의 IQR값을 본다.

lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR
print("lower : ", lower, "upper : ", upper)
tf = apt.단가.between(lower,upper) # outlier 범주 밖의 값들

outliers = apt.loc[~tf, :] # outlier 범주 밖의 반전이므로 outlier 에 해당하는 값들의 범위
outliers

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 실제 사용예시 : 구별로 단가의 중심, 산포도를 계산하고 비교

apt.groupby('').단가.describe()

apt.groupby('').단가.median()
apt.groupby('').단가.median().sort_values() 
apt.groupby('').단가.median().sort_values(ascending = False) 
apt.groupby('').단가.std().sort_values() 

# 용산구 자료만 추출 
s = apt[apt. == '용산구']
s_tb = s.단가.describe()

Q1 = s_tb['25%']
Q3 = s_tb['75%']
IQR = Q3 - Q1

lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR

tf = s.단가.between(lower,upper) 
outliers = s.loc[~tf, :] 
outliers

(3) 왜도(skewness) - 평균과의 거리의 세제곱이 포함됨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pandas as pd
apt = pd.read_excel('data/아파트_실거래가_서울.xlsx')
apt.columns

apt.rename(columns = {'전용면적(㎡)' : '면적', '거래금액(만원)' : '가격'}, inplace = True) # inplace: 자료에 변경점을 반영한다.
apt['단가'] = apt.가격 / apt.면적

# 왜도
# 왜도 값이 양수(1.446649)이므로 오른쪽으로 긴 꼬리를 가진 분포임을 유추할 수 있음
apt.단가.skew()

# 왜도의 값이 가장 작은 경우인 중구의 경우 왜도 값이 음수이므로 왼쪽으로 긴 꼬리를 가진 분포임을 유추할 수 있음
# 왜도의 값이 가장 큰 경우인 노원구의 경우 왜도 값이 양수이므로 오른쪽으로 긴 꼬리를 가진 분포임을 유추할 수 있음
apt.groupby('').단가.skew().sort_values()

(4) 첨도(kurtosis) - 평균과의 거리의 네제곱이 포함됨 - 정규분포를 기준으로 하며, 정규분포의 첨도는 0으로 한다.

1
2
3
4
5
6
7
8
9
# 첨도 값이 양수이므로 정규분포에 비해서 두꺼운 꼬리를 가진 분포임을 할 수 있음
apt.단가.kurtosis()

# 중구의 경우 첨도 값이 양수이고 절대값이 크므로 더 두꺼운 꼬리를 가진 분포임을 할 수 있음
apt.단가[apt. =='중구'].kurtosis()
# 금천구의 경우 첨도 값이 0에 가까우므로 정규분포와 비슷한 정도의 꼬리 분포를 가지고 있음을 알 수 있음 
apt.단가[apt. =='금천구'].kurtosis()

(5) 상관계수(correlation coefficient) - 두 변수와의 선형관계의 강도와 방향을 나타냄(일반적으로 피어슨 상관계수) - 두 변수의 공분산(covariance)을 각각의 표준편차의 곱으로 나눈 값 - 두 변수의 값이 아닌 순위(rank)에 관심이 있다면 스피어만 상관계수, 켄달 타우 등을 고려한다.

1
2
3
4
5
6
7
8
9
10
11
# 0.7014737005275267 -> 상관계수가 0.7 ($70\%$)이므로 가격과 면적은 상당히 높은 양의 상관관계를 가지고 있는 것으로 보임.
# 상관관계는 어짜피 -1 ~ 1 사잇값
apt['가격'].corr(apt['면적'])

# 예시 : y값이 x로부터 계산되어 서로 연관되어 있지만 계산된 상관계수는 0 : 비선형 관계를 반영하지 못함 
import numpy as np
x = pd.Series(np.arange(-20, 21))
y = x ** 2 # 비선형임.
x.corr(y)

This post is licensed under CC BY 4.0 by the author.