본문 바로가기
카테고리 없음

230524_DB복습

by 보랏 2023. 5. 24.

안녕하세요. 보랏입니다. 

 

오늘은 주유소 휘발유 가격을 비교하는 t검정과

docker환경에서 airflow를 실행하는 방법을 배웠습니다. 

 

바로 복습시작하겠습니다. 

 

※ 제가 작성한 벨로그에서 가져온 글입니다. 

https://velog.io/@nbac406/%ED%86%B5%EA%B3%84

 

[통계] t검정(T-test)

T-test T-test란? 모집단의 분산이나 표준편차를 알지 못할 때 모집단을 대표하는 표본으로부터 추정된 분산이나 표준편차를 가지고 검정하는 방법 즉, 두 개의 집단 간 평균 차이가 통계적으로 유

velog.io

https://velog.io/@nbac406/docker%EC%97%90%EC%84%9C-airflow-%EC%8B%A4%ED%96%89

 

[Airflow] Docker 컨테이너 airflow 실행

Docker & Airflow Docker를 사용하여 Airflow를 실행하는 이유 1. 일관된 환경 Docker는 컨테이너화된 환경을 제공하여 개발, 테스트 및 배포를 일관된 방식으로 수행할 수 있음 Airflow와 그 종속성을 가진

velog.io

 

 


T-test

T-test란?

  • 모집단의 분산이나 표준편차를 알지 못할 때 모집단을 대표하는 표본으로부터 추정된 분산이나 표준편차를 가지고 검정하는 방법
    즉, 두 개의 집단 간 평균 차이가 통계적으로 유의미한지를 검정하는 방법

t값(t-value)

  • t값이란 t검정에 이둉되는 검정통계량, 두 집단의 차이의 평균을 표준오차로 나눈 값
    즉, 표준오차와 표본평균 사이의 차이의 비율

T-test 예시

1. 가정

  • 한 게임 회사가 게임 A와 게임 B를 출시
  • 두 게임의 평균 플레이 시간이 차이가 있는지 확인을 위한 t검정 실행

2. 데이터 수집

  • 무작위로 선택한 각 게임별 30명의 플레이어들에게 게임 A,B를 플레이
  • 각 플레이어들의 플레이 시간을 기록

3. 가설 설정

  • 귀무 가설 : 게임A와 게임B의 평균 플레이 시간은 같다
  • 대립 가설 : 게임A와 게임B의 평균 플레이 시간은 다르다

4. T-검정 수행

  • 두 집단(게임A, 게임B)간의 평균 플레이 시간 차이를 비교하기 위해 t검정 수행
  • t검정은 표본의 평균, 표준편차, 표본 크기 등을 고려하여 검정 통계량(t값)을 계산

5. 유의수준과 기각 영역 판단

  • 사전에 결정한 유의 수준(예 : 0.05)에 따라 임계값을 설정
  • t-검정 결과에서 계산된 t-value를 임계값과 비교
  • t-value가 임계값보다 크거나 작으면, 귀무가설을 기각하고 대립가설을 채택

주유소 데이터 활용 T-test 진행

주제 : 강남과 강북의 휘발유 평균 차이는 있는가?

# 서울 자치구 상반기&하반기 주유소 데이터를 가져와서 concat으로 결합
import pandas as pd

df1 = pd.read_csv("./상반기 주유소 판매가격.csv",  encoding='cp949')
df2 = pd.read_csv("./하반기 주유소 판매가격.csv",  encoding='cp949')

oil = pd.concat([df1, df2], ignore_index=True )

# 지역별 휘발유 가격
oil.groupby(['지역'])['휘발유'].mean().sort_values()

#강남구, 강북구 휘발유 평균
a = oil.query(" 지역 == '서울 강북구'")['휘발유'].values
b = oil.query(" 지역 == '서울 강남구'")['휘발유'].values
print (oil.query(" 지역 == '서울 강북구'")['휘발유'].mean())
print (oil.query(" 지역 == '서울 강남구'")['휘발유'].mean())

# t-test (독립표본 t-test )
stats.ttest_ind(oil.query(" 지역 == '서울 강북구'")['휘발유'],
                oil.query(" 지역 == '서울 강남구'")['휘발유'])

  • 검정통계량(statistic) 값이 87.94로 첫 번째 집단의 평균이 두 번째 집단의 평균보다 작아 유의미한 평균차이가 있으며, p-value값이 0으로 유의수준(0.05)보다 작아 귀무가설을 기각하고 대립가설을 채택 함

 


Docker & Airflow

Docker를 사용하여 Airflow를 실행하는 이유

1. 일관된 환경

  • Docker는 컨테이너화된 환경을 제공하여 개발, 테스트 및 배포를 일관된 방식으로 수행할 수 있음
  • Airflow와 그 종속성을 가진 환경을 Docker이미지로 패키지화하면 각각의 환경에서 동일한 실행 환경을 유지 가능 (개발 및 운영간의 호환성 향상)

2. 확장성

  • 컨테이너를 실행하여 처리량을 증가시킬 수 있으며 작업 부하가 증가할 때 확장성을 제공하고 높은 가용성을 유지 가능

3. 이식성

  • Airflow를 Docker이미지로 패키지화하면 다른 시스템 또는 클라우드 환경으로 쉽게 이동 가능
  • 배포 및 확장을 단순화 가능

4. 버전 및 종속성 관리

  • Airflow를 Docker이미지로 패키지화하여 버전 관리 용이

Docker에서 Airflow 컨테이너 설치

docker run -it -p 8080:8080 -v /home/gen/workspace/dags/:/opt/airflow/dags/ -v /etc/localtime:/etc/localtime:ro --entrypoint=/bin/bash --name airflow --privileged apache/airflow:2.6.1 
  • p 8080:8080 : Host의 8080포트와 컨테이너의 8080포트를 매핑
  • v /home/gen/workspace/dags/:/opt/airflow/dags/ : 호스트의 '/home/gen/workspace/dags/' 디렉토리를 컨테이너의 'opt/airflow/dags/'디렉토리에 마운트
  • -v /etc/locattime:/etc/loacltime:ro'호스트의 로컬 타임존 정보를 컨테이너로 마운트
  • --entrypoint=/bin/bash : 컨테이너가 실행될 때 '/bin/bash'쉘을 병행하여 컨테이너 접속 시 명령어 실행 가능
  • --name airflow : 컨테이너 이름을 airflow로 지정
  • --privileged : 컨테이너가 호스트 시스템의 모든 기능과 리소스에 엑세스 할 수 있도록 허용
  • apache/airflow:2.6.1 : docker허브의 'apache/airflow'이미지를 사용(버전 2.6.1)
# DB 초기화
airflow db init

# airflow user 생성
airflow users create --usename amdin --password admin --firstname Anonymous--lastname Admin --role Admin --email test@test.com

# 웹서버 및 스케줄링 백그라운드 실행
airflow webserver & 
airflow scheduler & 

파이썬 task 작업 파일(.py)을 dags폴더에 복사 후 127.0.0.1:8080으로 접속

 

 

 

 

이렇게 복습 마무리하겠습니다.

 

감사합니다.