2025. 3. 20. 22:45ㆍ데이터 분석/데이터 사이언스
2. 데이터 수집 및 준비 (Data Collection & Preparation)
데이터 분석에서 가장 중요한 첫 번째 단계는 데이터를 수집하고 준비하는 과정입니다. 이 단계에서는 데이터를 다양한 방법으로 수집한 후, 정리 및 정제하여 분석이 가능한 형태로 가공해야 합니다. 올바른 데이터 준비 과정이 없으면 분석의 신뢰도가 낮아지고, 잘못된 결과로 이어질 수 있습니다.
2.1 데이터 수집 방법 (Data Collection Methods)
데이터는 다양한 출처에서 수집될 수 있으며, 대표적인 수집 방법은 다음과 같습니다.
1) 웹 스크래핑 (Web Scraping)
웹사이트에서 데이터를 자동으로 수집하는 기법으로, HTML 페이지를 분석하여 원하는 정보를 추출합니다.
- 주요 라이브러리: BeautifulSoup, Scrapy, Selenium
- 활용 예제:
- 뉴스 기사, 제품 가격 정보, 소셜미디어 댓글 수집
- 실시간 크롤링을 통한 트렌드 분석
- 주의점:
- 과도한 요청으로 인해 IP 차단 가능 (Robots.txt 정책 확인 필요)
- 법적 문제 발생 가능 (웹사이트 이용약관 준수 필요)
2) API (Application Programming Interface) 활용
기업이나 기관에서 제공하는 API를 통해 데이터를 수집하는 방식입니다.
- 주요 라이브러리: requests, json
- 활용 예제:
- 트위터 API를 활용한 트윗 데이터 수집
- 날씨 API를 통한 기상 데이터 수집
- 금융 API를 통한 주식 시장 데이터 수집
- 장점:
- 공식적으로 제공되므로 안정적이고 합법적
- 최신 데이터 접근 가능
3) 데이터베이스 (Database) 활용
데이터베이스에서 SQL을 이용하여 데이터를 조회하는 방식입니다.
- 주요 데이터베이스: MySQL, PostgreSQL, SQLite, MongoDB
- 주요 라이브러리: SQLAlchemy, sqlite3, pymongo
- 활용 예제:
- 기업의 고객 정보, 주문 내역 분석
- 로그 데이터 수집 및 분석
- 장점:
- 대량 데이터 저장 및 관리 가능
- 정형 데이터 분석에 적합
4) CSV 및 엑셀 파일 (CSV, Excel Files)
CSV, Excel, JSON과 같은 파일 형식으로 데이터를 저장하고 분석할 수 있습니다.
- 주요 라이브러리: pandas (read_csv, read_excel)
- 활용 예제:
- 설문 조사 결과 분석
- 재무 데이터 관리
- 장점:
- 간편하고 가볍게 사용 가능
- 다양한 프로그램과 호환
2.2 데이터 저장 및 관리 (Data Storage & Management)
수집한 데이터는 효율적으로 저장하고 관리해야 합니다. 데이터의 크기와 특성에 따라 적절한 저장 방식을 선택하는 것이 중요합니다.
1) 파일 형식 선택
| 형식 | 설명 | 장점 | 단점 |
| CSV | 쉼표로 구분된 텍스트 파일 | 가볍고 범용성이 높음 | 대량 데이터 처리 속도 저하 |
| JSON | 키-값 구조의 데이터 저장 | API와 호환성이 높음 | 구조가 복잡할 수 있음 |
| Excel | 스프레드시트 형식 데이터 | 사람이 직접 보기 쉬움 | 대용량 데이터 처리 어려움 |
| Parquet | 컬럼 기반 저장 포맷 | 대량 데이터 처리에 최적화 | 범용성이 낮음 |
2) 데이터베이스 활용
- 관계형 데이터베이스 (RDBMS): MySQL, PostgreSQL, SQLite (정형 데이터에 적합)
- 비관계형 데이터베이스 (NoSQL): MongoDB, Redis (반정형 또는 비정형 데이터에 적합)
3) 클라우드 스토리지
- Google Drive, Dropbox: 소규모 데이터 공유 및 협업
- AWS S3, Google Cloud Storage: 대용량 데이터 저장 및 분석
2.3 데이터 정제 (Data Cleaning)
데이터 분석에서 중요한 것은 데이터의 품질입니다. 결측값 처리, 이상치 탐지, 데이터 변환 등의 정제 과정을 거쳐야 정확한 분석이 가능합니다.
1) 결측값 처리 (Missing Values Handling)
- 삭제 (Drop): 결측값이 적을 경우 해당 행(row) 또는 열(column) 삭제
- 대체 (Imputation): 평균, 중앙값, 최빈값으로 채우기
- 예측 모델 활용: 머신러닝을 이용해 결측값 예측 후 대체
import pandas as pd
df = pd.read_csv("data.csv")
df.fillna(df.mean(), inplace=True) # 평균값으로 결측값 대체
2) 이상치 탐지 및 처리 (Outlier Detection & Handling)
- 기준 설정: 평균 ± 3 표준편차, IQR(사분위 범위) 활용
- 처리 방법: 제거, 대체, 변환
import numpy as np
Q1 = df["column"].quantile(0.25)
Q3 = df["column"].quantile(0.75)
IQR = Q3 - Q1
df_filtered = df[(df["column"] >= Q1 - 1.5 * IQR) & (df["column"] <= Q3 + 1.5 * IQR)]
3) 데이터 변환 (Data Transformation)
- 로그 변환 (Log Transformation)
- 스케일링 (Standardization, Normalization)
- 범주형 데이터 인코딩
2.4 데이터 전처리 기법 (Data Preprocessing Techniques)
1) 정규화 (Normalization)
데이터의 값 범위를 일정하게 맞추는 과정으로, 주로 0과 1 사이로 변환합니다.
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df_scaled = scaler.fit_transform(df)
2) 인코딩 (Encoding)
범주형 데이터를 수치형 데이터로 변환하는 과정입니다.
- One-Hot Encoding: 고유한 값을 이진 벡터로 변환
- Label Encoding: 각 카테고리를 숫자로 변환
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
df_encoded = encoder.fit_transform(df[['category_column']])
3) 차원 축소 (Dimensionality Reduction)
고차원의 데이터를 저차원으로 변환하여 분석을 용이하게 만듭니다.
- PCA (주성분 분석): 데이터의 주요 특징을 유지하면서 차원 축소
- LDA (선형 판별 분석): 분류 문제에서 차원 축소에 활용
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
df_pca = pca.fit_transform(df)
정리
데이터 분석에서 가장 중요한 단계 중 하나는 데이터를 수집하고 정리하는 과정입니다. 데이터를 효율적으로 관리하고, 불필요한 노이즈를 제거하며, 분석이 가능한 형태로 변환하는 것이 필수적입니다.