[혼공분석] 1주차

빡커·2025년 7월 7일
0

CH01 데이터분석을 시작하며

01-1 데이터 분석이란

데이터 분석과 데이터 과학 인공지능 각각의 의미를 간단히. 왜 사람마다 다 다른지

  1. 왜 사람마다 정의가 다르냐? 서로 교집합이 존재하며 교집합을 어디에 포함시키냐가 다르기 때문
  2. 일반적으로는 데이터 과학이 인공지능과 데이터 분석을 포함하는 관계가 일반적
  3. 데이터 분석은 데이터 수집, 전처리, 마이닝 등 데이터를 가공하는것에 중점을 둔다고 본다.
  4. 인공지능은 모델 설계, 마이닝한 맥락대로 모델이 학습을 제대로 하고 있는지에 대한 모든것을 처리하는것에 중점을 두고
  5. 데이터 과학은 그 모든 수단을 활용하여 결과를 만드는것에 중점을 둔다고 본다.

머신러닝, 데이터 마이닝, 통계학 의미 간단히

  1. 위에 인공지능이 머신러닝 설명을 포함하며, 간단하게 모델 학습을 의미
  2. 위에 데이터 분석이 데이터 마이닝의 설명을 포함, 간단하게 데이터 속에서 패턴과 공식을 찾아내는것
  3. 통계학은 원론과 실습 모두이며, 표준편차의 이론 같은 것을 활용한 도구 사용방식이라고 본다.

통계학으로 접근한 데이터 분석. 기술통계, 탐색적 데이터 분석, 가설검정을 서로간의 구별되는 특징으로 요약

  • 다시
  1. 기술통계: 통계학을 도구적 관점으로 본계 기술통계
  2. 탐색적 데이터 분석: EDA
  3. 가설 검정:

넓은 의미(수행업무적)의 데이터 분석과 좁은 의미(기술적)의 데이터 분석으로 구분해봐라.

  1. 좁은 의미: 데이터 분석과정에서 알아야하는 기술적 요건들
  2. 넓은 의미: 데이터 분석과정에서 필요한 준비 및 아웃풋하는 것까지 전부포함

데이터 분석 도구, 넘파이, 판다스, 맷플롯립, 사이킷런, 사이파이 도구들 구별되는 특징으로 요약

  1. 넘파이: 다차원 배열자료구조를 제공하며 강력한 인터페이스도 제공
  2. 판다스: 데이터 프레임이 대표적인 자료구조이며, 행렬 데이터를 조작하는데 필요
  3. 맷플롯립: 시각화
  4. 사이킷런: 머신러닝 학습 라이브러리
  5. 사이파이: 과학 수학 공식들을 간단한 함수호출로 실행하게 만들어줌

데이터 마이닝과 머신러닝 차이점 구별

  1. 데이터 마이닝은 패턴을 인간이 뽑아냄
  2. 머신러닝은 패턴을 기계가 학습함

머신러닝도 패턴 데이터 마이닝도 패턴 그런데 왜 데이터 마이닝이 필요하지?

  1. 머신러닝이 학습하기 위한 패턴이란 공식은 인간이 제시를 해줘야함. 즉 광범위하고 핵심을 잘 잡은 데이터 마이닝이 성공적인 머신러닝의 필수 조건

확인문제

  1. 2 : 소프트웨어 설계
  2. 4 : 웹앱 개발

01-2 구글 코랩과 주피터 노트북

확인 문제

  1. 2
  2. 3
    1. 4
    2. 1
    3. 2
    4. 3

01-3 이 도서가 얼마나 인기가 좋을까요?

학습 목적: 데이터 분석을 해가는 과정을 읽어보며 감잡기

도서 데이터 찾기: 데이터가 없는 경우 혹은 찾기어려운 경우는 비일비재. 이럴때 제일 먼저 찾는 방법?

  1. 오픈 데이터셋
  2. 오픈 api
  3. 유료 데이터 및 api
  4. 크롤링

코랩으로 데이터 로드하기

막힘

CSV를 선호하는 이유?

  • 가벼움. 텍스트와 컴마만으로 이루어져 있어 조작이 간편

gdown 패키지란?

  • googledrive url을 이용하여 바로 원하는 경로에 다운로드 하는 패키지

파이썬으로 CSV 다루기

# 로드
%pip install gdown

# import gdown
# bool isShow = False
# gdown.download(url="url",output="filepath", quiet=isShow)
import gdown

b_csv = gdown.download('https://bit.ly/3eecMKZ',
               '남산도서관 장서 대출목록 (2021년 04월).csv', quiet=False)

# 프린트
for text in b_csv.readline():
  print(text)


# 파일 인코딩 체크: readmode 세팅, chardet.detect()
# 왜 확인하냐?
#    - CSV 인코딩이 UTF-8, CP949, EUC-KR 등 제각각이라 한글 깨짐 방지하려고. 
import chardet

with open('남산도서관 장서 대출목록 (2021년 04월).csv', 'rb') as f:
    raw = f.read(10000)  # 앞부분만 읽어도 OK
result = chardet.detect(raw)
print(result)  # {'encoding': 'CP949', 'confidence': 0.99}

# 인코딩 형식 정하여 다시 로드
import pandas as pd

enc = result['encoding'] or 'utf-8'
df = pd.read_csv(
    '남산도서관 장서 대출목록 (2021년 04월).csv',
    encoding=enc,
    low_memory=False  # dtype 경고 없애려고
)
print(df.head())

df = pd.read_csv(
    '남산도서관 장서 대출목록 (2021년 04월).csv',
    encoding=enc,
    errors='replace',  # � 로 깨진 글자 대체
    low_memory=False
)

데이터프레임으로 다루기 판다스: 판다스란? 데이터 프레임이란? 시리즈란? 간단히

# 판다스(Pandas): 파이썬에서 표 형태(테이블) 데이터를 다루기 위한 라이브러리  
# 데이터 프레임(DataFrame): 2차원 행·열 구조, SQL 테이블이나 엑셀 시트와 유사  
# 시리즈(Series): 1차원 배열, 데이터 프레임의 한 열(column)에 해당  

### 판다스로 csv 다루기

# 로드
import pandas as pd
df = pd.read_csv(
    '남산도서관 장서 대출목록 (2021년 04월).csv',
    encoding=enc,         # 앞에서 감지한 인코딩
    low_memory=False      # 청크별 타입 추론 비활성화
)
print(df.shape, df.columns)

# low 메모리 에러는 왜 나오나? 해결법
# 파일이 크고 칼럼마다 데이터 타입이 섞여 있으면, pandas가 작은 청크 단위로 읽으며 dtype 경고 발생
# 해결: low_memory=False 로 한 번에 읽어서 일관된 타입 추론

# 다시 csv로 저장 to_csv
df.to_csv(
    'processed_data.csv',
    index=False,           # 인덱스 열 제거
    encoding='utf-8-sig'   # Excel 호환용 BOM 포함
)

# dataframe은 생성시 기본값이 자동으로 맨 왼쪽에 인덱스 열을 추가하는 것. 만약 끄고 싶다면? -> index_col=0
df = pd.read_csv('file.csv', index_col=0)
df.to_csv('file.csv', index=False)

# 엑셀로 저장 -> 필요한 라이브러리들 사용법
%pip install openpyxl
df.to_excel(
    'output.xlsx',
    index=False,
    engine='openpyxl'
)
profile
난민

0개의 댓글