공부/python

혼자 공부하는 데이터 분석 1주차: 데이터 분석을 시작하며

무른2 2024. 7. 7. 16:29

 

 

 

데이터 분석이란?

 

 

  • 위키피디아에서는 데이터 분석이란 '유용한 정보를 발견하고 결론을 유추하거나, 의사 결정을 돕기 위해 데이터를 조사,정제,변환,모델링하는 과정'으로 정의하고 있다.
  • 데이터 분석과 함께 자주 언급되는 용어는 데이터 과학으로, 데이터 과학이 데이터 분석보다 더 큰 개념으로 볼 수 있다.

  • 데이터 분석은 통계학과 관련이 많다. 통계적 관점에서 보면 데이터 분석은 크게 기술통계, 탐색적 데이터 분석, 가설검정으로 나눌 수 있을 것이다.
    • 기술통계: 관측이나 실험을 통해 수집한 데이터를 정량화하거나 요약하는 기법
    • 탐색적 데이터 분석: 데이터를 시각적으로 표현하여 주요 특징을 찾고 분석하는 방법
    • 가설검정: 주어진 데이터를 기반으로 특정 가정이 합당한지 평가하는 통계 방법

 

 

 


[데이터 분석과 데이터 과학의 차이]

 

데이터 분석

범주: 비교적 소규모

목표: 의사 결정을 돕기 위한 통찰을

제공하는 일

주요 기술: 컴퓨터과학, 통계학, 시각화 등

 

데이터 과학

범주: 대규모

목표: 문제 해결을 위해 최선의 솔루션을

만드는 일

주요 기술: 컴퓨터 과학, 통계학, 머신러닝, 인공지능 등

 

  • 데이터 과학은 통계학, 머신러닝, 데이터 마이닝, 데이터 분석 등을 아우르는 큰 개념

 

 

더보기

데이터 마이닝이란?

데이터에서 패턴 혹은 지식을 추출하는 작업을 의미

 

데이터 분석가의 작업 과정

 

  • 넓은 의미의 데이터 분석
    • 데이터 수집
    • 데이터 처리
    • 데이터 정제
    • 모델링
  • 좁은 의미의 데이터 분석
    • 기술통계
    • 탐색적 데이터 분석
    • 가설검정

 

데이터 분석을 위한 도구(파이썬 필수 패키지)

 

데이터 분석에 많이 사용하는 프로그래밍 언어는 파이썬과 R이다.

또한, 데이터가 데이터베이스 형태로 존재한다면 SQL을 사용할 수 있는데 SQL은 데이터베이스를 다루기 위한 언어로 시각화나 통계적 분석이 불가하다.

R은 통계 관련 패키지가 풍부하여 통계 계산을 위해 주로 사용되는 편이다.

머신러닝 관련 패키지는 파이썬이 훨씬 많으며, 이 책은 파이썬을 이용한 데이터 분석을 다루고 있으므로 파이썬 필수 패키지를 소개하고자 한다.

 

  • Numpy 
    • 고성능 과학 계산과 다차원 배열을 위한 파이썬 패키지
  • pandas
    • 마이크로소프트 엑셀의 시트처럼 숫자와 문자를 섞어서 표 형태로 저장할 수 있는 데이터프레임을 활용
    • 편리한 데이터 처리와 분석 작업을 위한 기능 제공
    • 파이썬 데이터 분석에서 기본 자료 구조로 numpy와 pandas를 자주 사용
  • matplotlib
    • 데이터 시각화를 위한 기본 패키지
    • 정적 혹은 동적인 그래프를 그릴 수 있다
    • 다른 과학 패키지와 호환성이 높다
    • seaborn, bokeh 같은 시각화 패키지도 많이 사용하는 편
  • scipy
    • numpy를 기반으로 구축된 수학과 과학 계산 전문 패키지
    • 미적분, 확률,선형대수,최적화 등을 알고리즘으로 구현 
  • scikit-learn
    • numpy와 scipy에 크게 의존하는 머신러닝 패키지

 


 

실습

 

혼자 공부하는 데이터 분석 깃허브 저장소

 

- 깃허브에 로그인하지 않아도 실습 코드 사용 가능

- 쥬피터를 사용해도 무방하지만 해당 책은 구글코랩으로 실습을 진행하고 있으므로 구글코랩 환경에서 실습을 진행한다.

 

  • gdown 패키지: 구글 드라이브를 포함하여 웹에서 대용량 파일을 다운로드할 수 있는 패키지
  • gdown 패키지를 import 하여 남산도서관 장서 대출목록 csv 파일을 다운로드한다.

 

  • 파이썬의 open()함수로 파일을 읽어오기
  • UnicodeDecodeError가 났음을 확인할 수 있다.
    • 파이썬의 open()함수는 기본적으로 텍스트 파일이 UTF-8 형식으로 저장되어 있다고 가정
    • 한글 텍스트는 EUC-KR을 사용하는 일이 대다수이기 때문에 csv 파일의 인코딩 형식 때문에 오류가 나는 것을 확인할 수 있다.
    • encoding은 문자를 컴퓨터가 이해할 수 있는 0과 1의 이진 형태로 바꾸는 것을 의미한다.
    • UTF-8은 전 세계 모든 문자를 컴퓨터에 표현하기 위해 만들어진 유니코드를 인코딩하는 방식 중의 하나
    • EUC-KR은 한글을 위한 완성형 인코딩 중 하나로 2바이트를 사용

 

  • chardet 패키지의 chardet.detect() 함수를 사용하여 문자 인코딩 방식을 알아보자
  • open() 함수로 텍스트 파일을 열 때 mode 매개변수를 binary 읽기 모드인 'rb'로 지정
  • 바이너리 모드로 지정하면 문자 인코딩 형식에 상관없이 파일을 열 수 있으므로 오류가 발생하지 않는다.

 

  • encoding 매개 변수로 인코딩 형식을 'EUC-KR'로 지정하면 오류가 나지 않음을 확인 할 수 있다.

 

 

인코딩 형식을 지정하여 데이터프레임으로 읽어보았다.

 

  • readline() 메서드 - 파일에서 한 줄을 읽어서 출력
  • read_csv() -csv 파일을 데이터프레임으로 읽기
  • to_csv() -데이터프레임을 csv 파일로 저장하기
  • low_memory 매개변수 - False로 지정시 파일을 나누어 읽지 않고 한 번에 읽는다.
    • dtypewarning 발생을 막을 수 있다.
    • 해당 경고가 발생하는 이유는 pandas가 csv 파일을 읽을 때 데이터타입을 자동으로 파악하기 때문이다.
    • 메모리를 효율적으로 사용하기 위해 pandas는 csv 파일을 나누어서 읽게 되고 이때 자동으로 파악한 데이터 타입이 달라지면 경고가 발생하게 된다.
#low_memory=False 사용시 메모리를 사용하여 한번에 읽기 때문에 메모리 부족 이슈가 생길 수 있다.
#이때는 경고가 발생하는 열에 데이터 타입을 직접 지정하는 해결방법도 있다.

df = pd.read_csv('남산도서관 장서 대출목록 (2021년 04월).csv', encoding='eue-kr',
dtype={'ISBN:str,'세트 ISBN': str, '주제분류번호':str})

 

 

 

저장한 csv 파일을 다시 open()함수로 읽어보았다.

이때, 다시 문제가 발생하는데 이미 존재하는 인덱스 열을 다시 생성하며 unnamed:0 이라는 열이 생겼음을 확인할 수 있다.

 

  • index_col 매개변수를 사용
    • csv파일에 인덱스가 이미 존재하는 것을 알려주기 위해 사용
    • pandas는 행마다 0부터 시작하는 인덱스 번호를 자동으로 붙여주기 때문에 이런 이슈가 발생한다.
#애초에 데이터프레임을 저장시 인덱스를 제외하고 저장할 수도 있다.

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

 

 


정리 및 필수 숙제

 

  1. 데이터 분석은 데이터를 수집, 처리, 정제,분석, 모델링하여 의사 결정을 내리는 데 도움을 주는 작업
  2. 데이터 과학은 데이터 분석, 머신러닝을 아우르는 개념 
  3. 파이썬 필수 패키지는 numpy,pandas,matplotlib,scipy,scikit-learn 등이 있다.
  4. csv 파일은 콤마(,)로 구분된 텍스트 파일
  5. pandas는 표 형식 데이터를 위한 편리한 도구를 다양하게 제공하는 강력한 데이터 분석 패키지
  6. 데이터 프레임은 pandas의 핵심 데이터 구조로 행과 열로 구성
  7. pd.read_csv() -csv파일을 읽어 데이터 프레임을 만듦
  8. df.head()- 데이터프레임에서 첫 5행을 반환  df.tail()은 데이터프레임에서 마지막 5행을 반환한다.
  9. df.to_csv() - 데이터프레임을 csv파일로 저장