분류 전체보기 113

Pandas: 멱등성과 UPSERT

⭐ 먼저 알아야 할 핵심 개념멱등성은 같은 입력으로 여러 번 실행해도 최종 결과가 같게 유지되는 성질이다.예를 들어 같은 2,000행을 두 번 적재했을 때도 최종 결과가 2,000행이어야 멱등하게 동작한다고 볼 수 있다.1회 실행 → 2,000행2회 실행 → 2,000행 ⭕1회 실행 → 2,000행2회 실행 → 4,000행 ❌ 데이터 파이프라인은 네트워크 오류, DB 장애 등으로 중간에 실패할 수 있기 때문에 안전하게 재실행할 수 있도록 멱등성을 고려해야 한다.그냥 INSERT만 하면?제약조건 없이 같은 데이터를 다시 INSERT하면 그대로 중복 저장된다.1회차 → 2,000행2회차 → 4,000행3회차 → 6,000행 ... 에러는 발생하지 않지만 나중에 집계나 분석 결과가 틀어질 수 있다.제약조건이 ..

-/Pandas 2026.09.03

Pandas: 대량 데이터 DB 적재와 성능

⭐ 먼저 알아야 할 핵심 개념대량 적재(Bulk Insert)는 데이터를 한 행씩 저장하지 않고 여러 행을 묶어서 DB에 저장하는 방식이다.한 행씩 INSERT하면 DB에 계속 요청을 보내야 하므로 데이터가 많을수록 비효율적이다. 따라서 여러 데이터를 묶어서 보내 DB와의 왕복 횟수를 줄이는 것이 핵심이다.90,000행1행씩 전송 → 최대 90,000번의 실행/요청 ❌5,000행씩 묶기 → 훨씬 적은 횟수로 처리 ⭕ 대량 적재 방법1. execute() 반복한 행씩 SQL을 실행하므로 대량 적재에 비효율적일 수 있다.가장 느리다.2. executemany()같은 SQL에 여러 데이터를 전달해 처리한다.3. to_sql()DataFrame을 DB 테이블에 바로 저장한다. -> 내부적으로는 exe..

-/Pandas 2026.09.03

Pandas: 원본 데이터와 정제 데이터의 스키마 설계

원본 테이블 raw_daily_price데이터 품질을 판단하기 전에 수집한 데이터를 최대한 그대로 저장하는 공간문자열 위주로 저장제약조건 최소화수집시간·출처 기록52000N/A- 예를 들어 close 값이 위처럼 섞여 있어도 일단 그대로 저장한다.왜냐하면 원본 저장 단계의 목적은 “이 값이 올바른가?”를 판단하는 것이 아니라 “수집한 것을 잃지 않고 보관하는 것”이기 때문이다.왜 모든 컬럼을 문자열로 받을까?close VARCHAR(30)date VARCHAR(20) 원본 데이터를 문자열로 저장하면 예상하지 못한 형식의 값이 들어와도 데이터를 잃지 않고 보관할 수 있다. 52000N/A-1,250 예를 들어 숫자가 들어올 거라고 예상했는데 위의 값이 들어온다고 가정해보자.INT NOT NULL로 만들어..

-/Pandas 2026.09.03

Pandas와 DB 연동 + DB 작업 시 조심할 점 3가지

DB 연결과 Cursorconnect()로 DB 연결 객체를 만들고, cursor()를 통해 SQL을 실행한다.conn = connect()with conn.cursor() as cur: cur.execute("SELECT VERSION() AS v, DATABASE() AS db") row = cur.fetchone() cursor는 SQL을 DB에 전달하고 결과를 받아오는 객체다.execute() → SQL 실행fetchone() → 결과 한 행 가져오기fetchall() → 결과 여러 행 가져오기1. commit()을 잊지 않기INSERT, UPDATE, DELETE처럼 데이터를 변경하는 SQL은 실행했다고 바로 DB에 확정되는 것이 아니다.cur.execute("INSERT INTO ..

-/Pandas 2026.09.03

Git 사용 가이드

김일현씨가 만듦 1. Repository Clone최초 1회 실행합니다.git clone Repository주소 아래 명령어를 통해 프로젝트 폴더로 이동하거나 git bash창을 끈 후에 프로젝트 내부에서 git bash창을 다시 띄웁니다.cd Repository 2. develop 브랜치 준비원격의 develop 브랜치를 로컬에 생성합니다.git checkout -b develop origin/develop 브랜치 확인git branch 3. 작업 시작작업 전 반드시 develop 브랜치로 이동합니다.git checkout develop 최신 내용을 가져옵니다.git pull origin develop 작업용 브랜치를 생성합니다.브랜치 생성 규칙git checkout -b feature/(도메인-)기능..

-/- 2026.09.01

Pandas: DataFrame 결합(Merge) 기본 및 키 정

Merge시세 데이터(90,000행)에 섹터 이름을 매번 저장하면 같은 문자열이 수천 번씩 반복된다. 따라서 데이터베이스 정규화 원칙에 따라 저장은 나누고 분석 시에는 결합(Merge)하여 활용한다.📌 Merge 및 키 정제 4단계 프로세스단계작업 항목핵심 목적주요 메서드 및 옵션1단계기본 병합식별 코드를 기준으로 두 테이블 결합merge(how='left', on='code')2단계열 이름 충돌 방지겹치는 컬럼명의 접미사 구분 지정suffixes=('_price', '_company')3단계키 정제 (Cleaning)불일치 원인(공백, 대소문자, 전각, 타입) 제거normalize('NFKC'), str.replace(), str.upper()4단계매칭 상태 검증Outer Merge 기반 결합 여부 ..

-/Pandas 2026.08.30

Pandas: 데이터 결측 처리 전략 및 시계열 보간

missing이상치 처리 과정에서 NaN으로 변환된 결측치(OHLC 가격 데이터 및 거래량)를 데이터 특성에 맞게 처리하는 절차와 종목별 그룹 보간(interpolate)의 중요성을 정리한다. 📌 결측 처리 3가지 전략 비교전략핵심 메서드선택 기준 및 주요 특징삭제dropna(subset=, how=, thresh=)삭제할 행 없이도 분석이 가능한가? 결측이 있는 행을 걸러낸다.대치fillna(값 / 평균 / 중앙값)대표값으로 적절한 것이 있는가? 결측자리를 지정한 값으로 채운다.보간interpolate()시계열 데이터에 적합. 앞뒤 값 사이를 직선으로 이어 빈칸(중중간값)을 추정한다. 1. 종목별 그룹 보간(groupby + interpolate)의 필요성시계열 데이터의 중간값을 추정해서 채워 넣는 ..

-/Pandas 2026.08.30

Pandas: 이상치 탐색

outliers 데이터 정제 과정에서 통계적 기준(IQR, 종목별 상대 기준)과 도메인 논리 규칙을 활용해 이상치를 탐색하고, 이를 안전하게 결측치(NaN)로 처리하는 절차다. 📌 이상치 탐색 및 처리 4단계 프로세스단계작업 항목핵심 목적주요 메서드 및 키워드1단계기본 분포 탐색전체 중앙값 대비 극단값(50배 초과, 5% 미만) 파악describe(), transform('median')2단계IQR 이상치 탐색전체 기준 vs 종목별 기준 IQR 탐색 비교quantile([0.25, 0.75]), transform()3단계논리적 이상치 탐색도메인 규칙 기반 데이터 오류(종가/고가/저가, 음수 거래량) 포착조건식 (close > high, volume 4단계이상치 결측 처리이상치를 행 삭제 대신 pd.NA..

-/Pandas 2026.08.30

Pandas: 데이터 타입 정제와 중복 제거

types_dup 데이터 정제 과정에서 숫자 컬럼의 콤마 제거, 날짜 형식 통일, 그리고 중복 데이터를 제거하고 저장하는 핵심 절차다.📌 타입 정제 및 중복 제거 3단계 프로세스단계작업 항목핵심 목적주요 메서드 및 키워드1단계숫자 변환콤마(,) 제거 후 숫자 타입으로 안전하게 변환str.replace(',', ''), pd.to_numeric(errors='coerce')2단계날짜 변환섞여 있는 날짜 형식을 datetime 타입으로 통일pd.to_datetime(format='mixed'), dt.dayofweek3단계중복 제거 및 저장기준열 기준 중복 행 제거 후 데이터 프레임 저장drop_duplicates(keep='first'), to_pickle() 1. 숫자 변환 (순서가 중요)숫자 데이터에..

-/Pandas 2026.08.30

Pandas: diagnose

Diagnose데이터 정제(Data Cleaning)에 들어가기 전, 데이터가 정상인지 여부를 판단하는 방법데이터 정제 진단 6단계 프로세스단계진단 항목핵심 목적주요 메서드 및 키워드1단계타입 확인숫자열이 문자열(object)로 읽히지 않았는지 확인df.dtypes, df.shape, df.info()2단계중복 검사서식 불일치(날짜 등)로 숨겨진 중복 데이터 포착pd.to_datetime(), df.duplicated()3단계결측 탐색기본 결측(NaN) 외 문자 형태의 결측(-, N/A, 빈칸) 추적isna(), na_values=[...], to_numeric(errors='coerce')4단계이상치/분포값이 깨졌거나 오염된 데이터 패턴 파악value_counts(dropna=False), descri..

-/Pandas 2026.08.30