데이터 분석/혼공단

[혼공단 9기] Chapter 1 정리

GRONG 2023. 1. 8. 20:52

데이터 분석

데이터 분석은 데이터를 수집, 정제, 처리, 분석, 모델링을 통하여 합리적인 의사결정을 돕기 위한 인사이트를 도출하는 것을 목표로 한다. 그렇기 때문에 패턴 도출과 같은 말이 잘 어울리는 일이라 할 수 있다

요구되는 능력으로는 크게 3가지

  1. 수학/통계
  2. 프로그래밍
  3. 도메인 지식

가 요구된다

수학/통계가 없다면 과학적이지 못한 계산이, 프로그래밍 지식이 없다면 전통적인 분석방법만이, 도메인지식이 없다면 비즈니스 목표를 향하지 못하기에 이런 다양한 능력을 필요로 한다

데이터 과학

흔히 데이터 사이언스라 불리는 이 분야는 데이터 과학을 비롯해 데이터 마이닝, 머신러닝, 통계학을 모두 일컫는 말이다. 인사이트를 넘어 문제를 해결하는 솔루션, 즉 제품이 나온다면 데이터 과학을 기반으로 하는 사업이라고 보면 된다.

파이썬

왜 쓰는가? 지난 10년간 머신러닝과 데이터 분석에 유용한 패키지들이 파이썬에 보급되어져 있다. 세월이 누적되면서 데이터를 다루는 생태계가 형성되었기에 파이썬을 선택한다

패키지

  • 넘파이 : 과학적인 계산을 위해 사용. 차원과 배열 자료형을 다룰 수 있다
  • 판다스 : 숫자와 문자를 섞어 표처럼 쓸 수 있는 데이터프레임을 제공한다
  • 맷플롯립 : 정적, 동적 함수를 시각화 할 수 있게 해주는 패키지
  • 사이파이 : 미분, 적분, 선형대수와 같은 수학적 계산을 돕는 패키지
  • 싸이킷런 : 파이썬 뿐만아니라 데이터 과학에서 대표적인 머신러닝 패키지

코랩

파이썬 설치하고~ pip로 패키지 이것저것 설치하고~ 환경 잡고 할 필요없이 그냥 구글 클라우드 상에서 굴러가는 최적의 파이썬 IDE

노트북

영어로 랩탑할 때 그거 말고 영어 표현상 그 노트, 한 권을 노트북이라 표현한다. ‘셀’들로 이루어져 있어 코드와 텍스트를 모두 보기 좋다

코드나 텍스트의 모음집. 셀이라 불리는 이유는 각 셀은 서로 독립되어 있기 때문!

마크다운 복습

  • ** → 굵은 글씨
    • or _ → 기울임
  • ~~ → 취소선
  • ‘#’ → 갯수에 따라 heading
  • ‛ → 코드로 표현
  • ‘>’ → 들여쓰기 이건 따지자면 노션의 ‘인용’같은 거임 왜째서 들여쓰기인가..?
  • ‘—-’ → 잘아는 가로줄 추가
  • ‘1. ‘ → 띄어쓰기 주의! 번호 매기기

데이터 찾기

자신이 보고자 하는, 즉 문제해결에 필요한 데이터 세트가 없다면 비슷한 데이터를 찾을 수 있는지를 봐야한다. → 공개 데이터 세트를 찾아보거나 데이터 과학과 관련된 온라인 포럼에 질문을 올려서 도움을 요청할 수 있다!

데이터 분석은 먼저 자신에게 필요한 데이터를 구하는 과정도 문제해결의 과정이군

csv?xlsx?

csv는 콤마로 구분되는 텍스트 파일, 한 줄이 하나의 레코드(행), 레코드는 콤마로 구분된 필드 혹은 열로 구성 데이터 분석에서 csv가 더 단순한 구조라 분석에 유리해서 csv를 많이 사용함 내용을 봐야하는가 → xlsx, 파일을 분석해야 하는가 → csv!

패키지

  • gdown → 구글 드라이브나 웹에서 대용량 파일을 다운로드 (참고로 책에 있던 링크는 다운로드 주소 그 자체였음)
  • chardet → detect를 써서 문자 인코딩 방식을 알아내기 위함
  • pandas → as pd 개발자들의 관례 pandas를 import할 때 as pd로 많이 함

함수

DataFrame.head( ) → 데이터프레임의 첫 5행 출력 DataFrame.to_csv( ) → 데이터프레임을 csv로 저장

csv 출력

텍스트 파일이기에 open( ) 함수 사용 가능 세계적으로는 유니코드를 많이 쓰지만 한국에서 만든 파일의 경우 EUC-KR을 많이 쓰기에 만약 코덱 오류가 난다면 chardet.detect( ) 함수를 써서 인코딩 방식을 확인해줘야 한다

import chardet
with open('ns_202104.csv',mode='rb') as f:
	d = f.readline()
print(chardet.detect(d))

open의 기본 보드는 ‘r’이지만 rb로 설정하면 바이너리 읽기 모드로 지정되서 파일을 열 수 있다. (다만 이것을 출력하는 것은 깨져서 나올 수 있으니 주의!) f에 바이너리 읽기 모드로 파일을 열고 d에 f의 한 줄을 저장한 뒤 chardet.detect( )함수를 통해 알아낸다

이제 EUC-KR이라는 것을 알았으니 open의 매개변수에 encoding=’EUC-KR’를 붙여주면 된다

지금과 같이 텍스틀 직접 읽는 방식은 큰 데이터를 확인하기에 앞서 시험적으로 출력하는 방법이라고 생각하면 되고 주로 판다스를 이용해 데이터를 읽는다

판다스

판다스는 시리즈와 데이터프레임으로 구성되어 진자

시리즈는 1차원 배열로, 담기는 데이터는 모두 같은 종류여야 한다 데이터프레임은 2차원 배열, 열마다 다른 데이터 종류를 쓸 수 있지만, 같은 열인 경우에는 시리즈 때처럼 데이터의 종류를 통일시켜줘야 한다

읽기

읽는 것은 주로 read_csv( )를 많이 쓴다

import pandas as pd
df = pd.read_csv('ns_202104.csv',encoding='EUC-KR')

를 하면 판다스 패키저

다음 head( )를 쓰면 데이터프레임의 첫 5개 행을 확인할 수 있다

판다스는 첫 번째 열에 자동으로 index를 부여한다 이걸 만들고 싶지 않다면 index_col=0로 설정하거나 index=False를 줘서 index를 부여하지 않겠다고 해줘야 한다 → 읽기와 쓰기에서 모두 동일하다 만약 첫 행에 번호, 저자, 출판사 등과 같은 분류 제목이 없다면 read_csv( )에서 header 매개변수를 None으로 지정하고 names에 제목을 정해줘야 한다. 이때 기존 것과 중복이 생겨서는 안된다

저장

to_csv를 사용한다

df.to_csv(’ns_202104.csv’)