(1장) 탐색적 데이터 분석

책 <데이터과학을 위한 통계> 정리해보았다.
Mar 11, 2023
(1장) 탐색적 데이터 분석
  • 범주형 데이터의 종류
    • 수치 데이터 : 연속형, 이산형
    • 범주 데이터 : 이진, 순서형
 
  • 위치 추정 일변량 분석
    • 데이터가 주어졌을 때, 각 변수의 대표값을 구한다
    • 용어 (평균, 가중평균, 중간값, 백분위수, 가중 중간값, 절사평균, 로버스트하다, 특잇값)
      • 평균 : 모든 값의 총합을 개수로 나눈 값
      • 절사평균 : 크기 순으로 정렬한 후, 양 끝에서 일정 개수의 값들을 삭제한 후 남은 값들을 가지고 구한 평균
      • 가중평균 : 가중치를 곱한 값의 총합을 가중치의 총합으로 나눈 값
      • 중간값
      • 백분위수
      • 가중 중간값 : 데이터 정렬후, 각 가중치 값을 위에서부터 더할 때, 총합의 중간이 위치하는 데이터 값
      • 절사평균 : 정해진 개수의 극단값을 제외한 나머지 값의 평균
      • 로버스트하다 : 극단값에 민감하지 않다
      • 특잇값 : 대부분의 값과 매우 다른 데이터 값
      state = pd.read_csv('state.csv') state['Population'].mean() #절사평균 scipy.stats trim_mean(state['Population'], 0.1) #중간값 state['Population'].median() #가중평균 np.average(state['Murder.Rate'], weights=state['Population']) wquantiles.median(state['Murder.Rate'], weights=state['Population'])
 
  • 변이(variability) 추정
    • 데이터 값이 얼마나 밀집해있고 퍼져있는지를 나타내는 산포도
    • 용어 (편차, 분산, 표준편차, 평균절대편차, 중간값의 중위절대편차, 범위, 순서통계량, 백분위수, 사분위범위)
      • 편차 : 관측값과 위치 추정값 사이의 차이 (유의어 : 오차, 잔차)
      • 분산 : 평균과 편차를 제곱한 값들을 n-1로 나눈 값 (유의어 : 평균제곱오차)
      • 표준편차
      • 평균절대편차 : 평균과 편차의 절대값의 평균
      • 중간값의 중위절대편차(MAD) : 평균과 편차의 절대값들의 중간값 (*극단값 영향이 최소화됨)
      • 범위 : 데이터의 최댓값과 최솟값의 차이
      • 순서통계량 : 최소에서 최대까지 정렬된 데이터 값에 따른 계량형 (유의어 : 순위)
      • 백분위수 : 어떤 값들의 P퍼센트가 이 값 혹은 더 적은 값을 갖고, (100-P)퍼센트가 이 값 혹은 더 큰 값을 갖도록 하는 값 (유의어 : 분위수)
      • 사분위범위(IQR) : 75번째 백분위수와 25번째 백분위수 사이의 차이
      #표준편차 state['Population'].std() #사분위범위 state['Population'].quantile(0.75) - state['Population'].quantile(0.25) #중위절대편차 statsmodels strong.scale.mad robust.scale.mad(state['Population']
 
  • 데이터 분포 탐색
    • 백분위수와 상자그림
    • 도수분포와 히스토그램
    • 밀도그림과 추정
 
  • 이진 데이터와 범주 데이터
    • 최빈값
    • 기대값 : 미래의 기댓값과 각 확률 가중치들을 모두 더한 값
    • 확률
 
  • 상관관계 이변량 분석
    • 상관계수 : 수치적 변수들 간에 어떤 관계가 있는지를 나타내기 위해 사용되는 측정량
      피어슨 상관계수
      피어슨 상관계수
      상관행렬 : 행과 열이 변수들을 의미하는 표. 각 셀은 그 행과 열에 해당하는 변수들간의 상관관계를 의미함!
      etfs = sp500_px.loc[sp500_px.index > '2012-07-01', sp500_sym[sp500_sym['sector'] == 'etf']['symbol']] sns.heatmap(etfs.corr(), vmin=-1, vmax=1, cmap=sns.diverging_palette(20, 220, as_cmap=True))
    • 산점도 : x, y축이 서로 다른 2개의 변수를 나타내는 도표
    • 상관계수가 0이라는 것은 상관성이 없다는 것을 의미하지만, 데이터를 랜덤하게 재배치하면 우연히 상관계수가 양이나 음이 될 수도 있다
    • 산점도 : 두 변수 사이의 관계를 시각화하는 가장 기본적인 방법
      ax = telecom.plot.scatter(x='T', y='VZ', figsize=(4,4), marker='$\u25EF$') ax.set_xlabel('ATT (T)') ax.set_ylabel('Verizon (VZ)') ax.axhline(0, color='grey', lw=1) ax.axvline(0, color='grey', lw=1)
 
  • 2개 이상의 변수 탐색 다변량 분석
    • 수치형 변수 x 수치형 변수
      #아웃 라이어 제거 kc_tax0 = kc_tax.loc[(kc_tax.TaxAssessedValue < 750000) & (kc_tax.SqFtTotLiving > 100) & (kc_tax.SqFtTotLiving < 3500), :] #hexbin 육각형 구간 도표 ax = kc_tax0.plot.hexbin(x='SqFtTotLiving', y='TaxAssessedValue', gridsize=30, sharex=False, figsize=(5,4)) ax.set_xlabel('Finished Square Feet') ax.set_ylabel('Tax-Assessed Value') #등고선 표 - seaborn, kdeplot fig, ax = plt.subplots(figsize=(4,4)) ax = sns.kdeplot(data=kc_tax0, x='SqFtTotLiving', y='TaxAssessedValue', ax=ax) ax.set_xlabel('Finished Square Feet') ax.set_ylabel('Tax-Assessed Value') #히트맵
      범주형 변수 x 범주형 변수
      #분할표 crosstab = lc_loans.pivot_table(index='grade', columns='status', aggfunc=lambda x: len(x), margins=True) df = crosstab.loc['A':'G', :].copy() df.loc[:, 'Charged Off':'Late'] = df.loc[:, 'Charged Off':'Late'].div(df['All'], axis=0) df['All'] = df['All']/sum(df['All']) perc_crosstab = df
      범주형 변수 x 수치형 변수
      #boxplot ax = airline_stats.boxplot(by='airline', column='pct_carrier_delay') ax.set_xlabel('') ax.set_ylabel('Daily % of Delayed Flights') plt.subtitle('') #violinplot ax = sns.violinplot(airline_stats.airline, airline_stats.pct_carrier_delay, inner='quartile', color='white') ax.set_xlabel('') ax.set_ylabel('Daily % of Delayed Flights')
Share article

hollyisyoon