안녕하세요. 보랏입니다.
오늘은 주유소 휘발유 가격을 비교하는 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으로 접속



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