취준일지

1110 일지

gamnyam 2024. 11. 10. 01:49

sqlalchemy를 이용하여 테이블 삭제하기

(컬럼타입을 수정하기가 번거롭다)

from sqlalchemy import create_engine
from models import Base, ProductDistance  # Product 테이블 모델 임포트

from sqlalchemy import create_engine
import os
from dotenv import load_dotenv, find_dotenv

user = os.environ["user"]
host = os.environ["host"]
port = int(os.environ["port"])
user = os.environ["user"]
password=os.environ["passwd"]
database=os.environ["database"]
charset=os.environ['charset']

engine = create_engine(f"mysql+pymysql://{user}:{password}@{host}:{port}/{database}")

Base.metadata.drop_all(engine, tables=[ProductDistance.__table__])

 

고민사항

 

이와 같은 데이터 분석 프로젝트를 진행할 때 고려해야 할 여러 측면이 있습니다. 각 단계에서 고민할 수 있는 사항들을 살펴보겠습니다.

1. 데이터 수집

  • 데이터 출처의 신뢰성: 여러 데이터 출처를 활용하는 만큼 각 데이터셋의 신뢰성과 정확성을 검토해야 합니다. 예를 들어, 기상청 데이터나 KT 통신빅데이터는 믿을 수 있는 출처지만, 각 데이터셋의 최신성과 정확성, 범위 등에 대한 검토가 필요합니다.
  • 데이터 형식 통합: 각 데이터 출처에서 제공하는 데이터 형식이 다를 수 있기 때문에, 이를 하나의 형식으로 변환하고 병합하는 과정에서 어려움이 있을 수 있습니다. 예를 들어, 날짜 포맷, 지역 이름, 단위 등을 일관되게 처리해야 합니다.
  • API 호출과 데이터 수집 자동화: 외부에서 데이터를 수집할 때, API를 통해 자동화하는 과정에서 오류 처리나 데이터 제한 등을 고려해야 합니다.

2. 데이터 전처리

  • 결측치 처리: 날씨 데이터에서 강수량이 결측인 경우 이를 0으로 처리하는 방식이 합리적인지 검토해야 합니다. 예를 들어, 결측치를 '0'으로 처리하는 것이 실제 데이터를 반영한 방법인지, 다른 방법이 더 나은지 고민할 수 있습니다.
  • 이상치 검출: 날씨 데이터에서 음수값이 나온다면 이상치일 수 있기 때문에, 이를 어떻게 처리할지 고민해야 합니다. 특정 값이 이상치인지 여부를 판단하기 위한 기준을 설정해야 합니다.
  • 데이터의 일관성 유지: 배달 목적지와 식당 간의 거리 계산 시, 위도와 경도를 기반으로 계산하는데, 이 데이터가 정확하지 않거나 누락된 값이 있을 경우 분석 결과에 영향을 줄 수 있습니다.
  • 범주형 변수의 처리: 음식 종류와 지역, 교통 수단 등 범주형 데이터는 분석 전에 어떻게 처리할지 고민해야 합니다. 예를 들어, one-hot 인코딩, label encoding, 또는 빈도 기반으로 카테고리 변환을 사용할 수 있습니다.

3. DB 생성 및 CRUD 기능 구현

  • 데이터베이스 설계: 데이터베이스 설계에서 어떤 테이블을 생성하고, 각 테이블 간의 관계를 어떻게 설정할지에 대한 고민이 필요합니다. 예를 들어, 배달 데이터와 날씨 데이터 간의 관계를 어떻게 설정할지, 배달 기록과 고객 정보 간의 관계를 어떻게 할지 생각해야 합니다.
  • SQL 최적화: CRUD 작업을 구현할 때, 특히 CREATE, UPDATE, DELETE 작업에 대한 성능을 고려해야 합니다. 데이터가 많아지면 쿼리 속도나 성능 문제가 발생할 수 있으므로, 이를 최적화할 방법을 찾아야 합니다.
  • 데이터 무결성 관리: 데이터를 삽입, 수정, 삭제할 때 무결성이 유지되도록 트랜잭션 관리와 제약 조건을 설정하는 것이 중요합니다. 예를 들어, 배달 시간과 날짜에 대한 제약을 설정하거나 외래키를 활용할 수 있습니다.

4. 데이터 분석

  • 배달 데이터와 날씨 데이터의 관계: 날씨와 배달 간의 관계를 분석하는 과정에서 날씨 변수(기온, 강수량, 풍속 등)가 배달 건수에 어떻게 영향을 미치는지 명확하게 규명하는 것이 중요합니다. 특히 기온이나 강수량에 따른 음식 유형별 배달 건수를 분석할 때, 변수들 간의 상관 관계를 살펴보는 것이 유용할 수 있습니다.
  • 배달 시간과 음식 유형: 배달 시간대별로 음식 유형을 분석할 때, 시간대와 음식 유형 간에 특정 패턴이나 차이가 있는지 확인해야 합니다. 예를 들어, 야식과 같은 특정 음식은 밤 시간대에 배달이 많을 것이라고 예상할 수 있으나, 실제 데이터를 통해 이를 검증해야 합니다.
  • 배달 구간과 음식 유형: 배달 구간이 길어질수록 배달 건수가 감소할 것이라고 예상할 수 있지만, 실제로 어떤 음식이 특정 거리에서 많이 배달되는지 파악할 필요가 있습니다. 이를 통해 도시나 지역 간의 차이를 분석할 수 있습니다.

5. 시각화

  • 명확한 시각화: 시각화를 통해 배달 시간대별, 음식 유형별, 강수량에 따른 배달 건수를 파악하고, 이를 직관적으로 이해할 수 있어야 합니다. 특히 여러 개의 범주를 비교하는 시각화를 할 때, 색상, 축의 범위, 범례 위치 등을 고려하여 보기 좋고 이해하기 쉬운 그래프를 만들어야 합니다.
  • 상호작용형 시각화: 여러 변수를 동시에 고려할 때, 상호작용형 시각화(예: 대시보드 형태)가 유용할 수 있습니다. 사용자가 필터를 통해 특정 조건을 조정할 수 있도록 구성할 수도 있습니다.

6. 분석 결과 해석

  • 인사이트 도출: 분석 결과에서 유의미한 인사이트를 도출하는 것이 중요합니다. 예를 들어, 특정 지역에서 기온이 낮을 때 배달 건수가 증가하는 이유는 무엇일까? 배달 시간대에 따라 음식 유형이 어떻게 달라지는지 등의 인사이트를 도출해야 합니다.
  • 비즈니스 의미 해석: 데이터 분석을 통해 얻은 결과가 실제 비즈니스에 어떻게 적용될 수 있을지 고민해야 합니다. 예를 들어, 배달 시간이 늦어지는 원인을 찾고, 이를 해결하기 위한 방안을 제시하는 등의 방향을 고민할 수 있습니다.

7. 모델링

  • 배달 시간 예측: 배달 시간을 예측하는 모델을 사용할 경우, 기온, 강수량, 배달 구간, 음식 유형, 교통 수단 등의 여러 변수들이 중요한 특성이 될 수 있습니다. 이를 위한 회귀 모델, 분류 모델 등을 고려해야 합니다.
  • 모델 평가: 모델을 평가할 때, RMSE, MAE, R-squared 등의 지표를 사용해 모델의 예측 정확도를 측정하고, 이를 개선할 수 있는 방법을 고민해야 합니다.

이 모든 과정을 진행하면서 문제 정의, 데이터 준비, 모델링결과 해석의 각 단계에서 깊은 고민이 필요합니다.

 

 

Git에 대용량 파일을 직접 업로드하는 것은 피하는 것이 좋습니다. 그 이유는 다음과 같습니다.

  1. 리포지토리 용량 증가: 대용량 파일을 포함하면 리포지토리 크기가 급격히 커지기 때문에, 클론이나 풀(pull) 속도가 느려집니다. Git은 리포지토리의 모든 버전을 추적하기 때문에, 큰 파일이 여러 버전으로 쌓이면 용량이 빠르게 늘어납니다.
  2. Git의 성능 저하: Git은 코드 및 텍스트 기반 파일에 최적화되어 있어, 대용량 바이너리 파일을 자주 업데이트하거나 버전 관리하기에 적합하지 않습니다. 대용량 파일이 많아질수록 Git의 성능이 저하될 수 있습니다.
  3. 협업 문제: 여러 사용자가 대용량 파일을 포함한 리포지토리를 클론하거나 푸시/풀하는 경우, 대역폭 문제와 다운로드 시간이 길어질 수 있어 협업 효율이 떨어집니다.

대신 Git LFS(Git Large File Storage) 같은 도구를 사용하는 것이 좋습니다. Git LFS는 대용량 파일을 Git 저장소와 분리하여 저장하고, Git에는 파일 포인터만 관리하도록 하여 성능 문제를 해결해 줍니다.

 

https://www.easy-me.com/d

 

EASYME.md | 리드미, 마크다운 작성 사이트

EASYME.md(이지미)는 README(리드미) 작성, Markdown 문법이 익숙하지 않은 사람들을 위해 만든 사이트입니다.

www.easy-me.com

easy reame 이런 곳을 발견했다

 

분석방법론

CRISP-DM 분석 방법론

CRISP-DM(Cross Industry Standard Process for Data Mining) 방법론은 전 세계에서 가장 많이 사용되는 데이터마이닝 표준 방법론으로 단계, 일반 과제, 세부과제, 프로세스 실행 등의 4가지 레벨로 구성된 계층적 프로세스 모델이기도 하다.

CRISP-DM의 절차는 6단계로 구성되어 있는데 각 단계들은 순차적으로 진행되는 것이 아니라, 필요에 따라 단계 간의 반복 수행을 통해 분석의 품질을 향상시킨다.

[그림3] CRISP-DM 분석 절차

가. Business Understanding (업무 이해)
업무 이해 단계에선 분석을 수행하고자하는 과제의 목적과 요구사항을 이해하고, 도메인 지식을 활용하여 초기 프로젝트 계획을 수립하는 단계이다. 이 단계에선 업무 목적 파악, 상황파악, 데이터마이닝의 목표 설정, 프로젝트 계획 수립 등의 세부 업무가 포함된다.

나. Data Understanding (데이터 이해)
해당 단계에선 분석을 위한 데이터를 수집하고 이해하는 단계이다. 이 단계에선 초기 데이터 수집, 데이터 기술 분석, EDA, 데이터 품질 확인 등이 있다.

다. Data Preparation (데이터 준비)
수집한 모든 데이터에서 분석에 용이한 데이터만을 추출하여 편성하는 단계이다. 이 단계에선 데이터셋의 선택과 데이터 정제, 분석용 데이터셋 편성, 데이터 통합, 데이터 포맷팅의 업무가 있다.

라. Modeling (모델링)
다양한 알고리즘을 선택하여 모델링 과정을 수행하고 파라미터를 최적해 나가는 단계이다. 학습데이터셋 통해 모델링을 수행하며, 실험데이터셋으로 평가한다. 이 단계에서의 수행 업무로는 모델링 기법 선택, 모델 테스트 계획 설계, 모델 작성과 평가가 있다. 

마. Evaluation (평가)
수행한 모델링 결과가 과제 목적에 적절한지 평가하는 단계로 평가된 모델링 평가가 분석 결과로 적용되는지 판단한다. 분석결과 평가, 모델링 과정 평가, 모델 적용성 평가 등의 수행 업무가 포함된다.

바. Deployment (전개)
완성된 모델을 실제 현업에 적용하기 위해 필요한 이행계획을 수립하는 단계이다. 이행계획에는 모델 적용에 필요한 모니터링은 물론 유지보수 계획 또한 포함된다. 전개 계획 수립 및 모니터링/유지보수 계획 수립, 프로젝트 종료 보고서 작성, 프로젝트 리뷰 등의 수행 업무가 포함된다.

 

데이터 경제가 진화될수록 데이터 분석의 가치는 커진다. 전통적으로 적용해왔던 분석 방법론은 지금에도 여전히 유효하다. KDD 방법론은 5가지, CRISP-DM 방법론은 6가지 프로세스로 이루어져 있다. 모두 이론적인 프로세스보다 구체적이면서 실무 적용 측면을 강조하고 있다. 각 단계 간에는 피드백을 통한 반복으로 분석 품질을 높이고 있다. 분석 기법과 알고리즘이 새롭게 소개되고 있는 현재에도 위 두가지 방법론은 기본으로서 이해하고 있어야 한다.

https://www.2e.co.kr/news/articleView.html?idxno=301010