본문 바로가기

AI가 뭐길래 왜 어려운 거죠?

EDA 와 Data Wrangling (ft. 첫_시험)

오늘 첫 스챌(스프린트챌린지; 한주동안 배운 내용 시험)을 진행했다.

사실 엄청나게 멘붕이 올 줄 알았는데 나름 괜찮았다.

아무래도 주말동안 최선을 다해 공부했던 것이 조금 도움이 됐나보다.

다행스럽게도? 흥미가 느껴진다. 첫 날에는 진짜 대혼란을 맞이했었는데

고작 일주일?도 아니다,, 5일차라고 개미눈물만큼의 적응이 되었다.

이것으로 만족하는 Sprint1을 보내주게 되었다. 

몇개월차의 짬이 찼을 때에 해당 글을 다시 본다면 제발 보다 쉽게 느껴지기를

 

 


Section1_Sprint1_WrapUp
본격적인 데이터 분석 및 모델링 전에, 데이터를 탐색하고 정제하는 과정이 필요하다.

 

  • EDA
    • EDA: 데이터 타입/규모/오류/분포/컬럼별 상관관계 확인
    • Feature Engineering: 기존 feature 재조합 → 새로운 feature 생성
      • 수학적 연산과 도메인 지식을 바탕으로
      • 모델 성능 향상 및 세세한 분석을 위해 진행
    • Business Insight: 통계치 및 시각화 활용 유의미한 결과 도출
      • 데이터 분석 전, 가졌던 질문에 대한 답 도출

 

  • Data Wrangling
    • Untidiness → Tidiness (구조적 문제)
    • 품질의 문제: content issue; 결측치, 중복값, 부정확한 값, 이상치 확인
    • 구조적 문제:  숲의 관점에서 Tidiness의 조건에 부합한지 확인

 

  • Differences
    • EDA는 데이터를 탐색하며 이해하는 과정에 집중하는 반면,
    • Data Wrangling은 분석하기 용이하도록 데이터를 정제, 변형, 통합하는 과정에 집중한다.  

사용한 라이브러리/메서드/함수

 

  • 불러오기
# 라이브러리 불러오기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import re	# 정규표현식(regex)
# 파일 업로드 1) 파일 직접 업로드
from google.colab import files
uploaded = file.uploads()
# 파일 업로드 2) 구글드라이브 활용
from google.colab import drive
drive.mount('/content/drive')
# 파일 업로드 3) 링크 활용
df = pd.read_csv('https://ds-lecture-data.s3.ap-northeast-2.amazonaws.com/gapminder/data1.csv')
# 변수 생성
df = pd.read_csv('data1.csv')
df = pd.read_excel('data1.xlsx')

 

  • 탐색
    • .shape
    • .head()
    • .sample()
    • .info()
    • .describe()
    • .duplicated(subset=)
    • .series.sort_values(ascending=True)
    • .series.value_counts()
    • .columns
    • .index
    • len()
    • sum()
    • .count()
    • .tail()
    • .loc() / .iloc()
    • .isnull() / .isna()
    • .fillna()

** 요약 없이 전체 데이터 출력 코드 **

pd.set_option('display.max_columns'None)
pd.set_option('display.max_rows'None)

 

  • Feature Engineering
    • .drop_duplicates()
    • .reset_index( , drop=True)
    • .apply()
    • .repeat()
    • .rename( , inplace=True)
    • .cut()
    • .copy()
    • .series.str.extract()
    • .series.srt.replace()
    • .series.srt.pad()
    • .astype()
    • np.nan
    • .isin()
    • insert_values()
    • round()
    • .all()
    • .melt()
    • .append()
    • .join()
    • .concat()
    • .merge( , how= , on=)
    • .drop( , axis=)
    • .series.str.strip()

 

  • 통계 및 시각화
    • .groupby( ,  as_index=False)
    • .query()
    • .mean()
    • .median
    • .plot()
    • plt.plot()
    • plt.scatter()

** 정제 완료된 최종 데이터 저장 **

df.to_csv('df_edited.csv', index=False)

 


아직 헷갈려요
ㅇ 데이터 유형 (Continuous Data, Discrete Data 등)
ㅇ 결측치 및 중복값 처리 방법
ㅇ 정규표현식 (regex)
ㅇ iloc / loc 의 차이점
ㅇ 위의 모든 코드 알지 못함 → 공식문서 활용

 

향후 계획
ㅇ Daily Reflection 활용하기
ㅇ 블로그 정리 꾸준히
ㅇ Notion Note 꼼꼼히 확인
ㅇ 정규표현식 알아보기
ㅇ 추천 사이트 
     - Kaggle
     - 점프 투 파이썬
     - medium 블로그
ㅇ 레퍼런스 확인

 

 

2023.02.20(월)