본문 바로가기
개발/데이터

[혼공단] 혼공데이터분석 - Chapter01. 데이터분석을 시작하며

 



01-1. 데이터 분석이란

데이터 분석과 데이터 과학

데이터 분석은 ‘유용한 정보를 발견하고 결론을 유추하거나, 의사 결정을 돕기 위해 데이터를 조사, 정제 , 변환, 모델링하는 과정’으로 정의한다. 데이터 과학은 해당 분야들을 아우르는 큰 개념으로 볼 수 있다.

  • 통계학 데이터 분석 - 기술통계, 탐색적 데이터 분석(EDA), 가설검정
  • 머신러닝
  • 데이터 마이닝

데이터 분석 : 올바른 의사 결정을 돕기 위한 통찰을 제공하는데 초점

데이터 과학 : 문제 해결을 위한 최선의 솔루션을 만드는 데 초점

 

데이터 분석가

데이터 분석가는 프로그래밍 기술을 갖추고 있고 통계학을 이해하면서 정보를 시작적으로 잘 표현할 수 있는 사람이다. 해당 비즈니스의 문제에 대한 깊은 이해를 요구하기 때문에 경영이나 사회 과학 등 다른 분야를 전공한 분석가도 많다.

데이터 분석가의 작업 과정

 

넓은 의미(통계학 데이터 분석)

  • 기술 통계
  • 탐색적 데이터 분석(EDA)
  • 가설 검정 등

좁은 의미

  • 데이터 수집
  • 데이터 정제
  • 데이터 분석
  • 데이터 모델링

 

데이터 분석을 위한 도구

언어

데이터 분석에 많이 사용되는 언어는 파이썬R이다. 사용자가 많고 다양한 도구가 있어서 작업을 수행하거나 해결할 때 도움을 받기에 좋다.

데이터가 데이터베이스 형태로 있다면 SQL을 사용할 수 있다. SQL은 데이터베이스만을 다루기 위해 고안된 언어로 시각화나 통계 분석을 수행하기에는 어렵다.

 

프로그래밍 환경 : 구글 코랩

구글 코랩은 설치 과정이 따로 필요없이 브라우저 내에서 Python 스크립트를 작성하고 실행할 수 있으며, 무료로 GPU를 사용할 수 있고 공유가 간편하다. 언급되는 파이썬 패키지를 모두 기본 제공한다. (나도 파이썬 알고리즘 및 데이터분석을 공부할때 애용했다.)

 

파이썬 필수 패키지

파이썬에는 분석 및 모델링 작업을 돕는 여러가지 패키지가 있는데, 그 중 NumPy, pandas, matplotlib, SciPy, Scikit-learn을 주로 사용할 것이다.

 

넘파이 NumPy - numerical python의 줄임말로 과학 계산 및 다차원 배열을 위한 파이썬 패키지이다.

판다스 pandas - 넘파이 배열과 다르게 Excel의 스프레드시트처럼 숫자와 문자를 섞어서 표 형태로 저장할 수 있는 데이터프레임을 사용하며 다양한 그래프 출력도 가능하다.

맷플롯립 matplotlib - 파이썬 데이터 시각화를 위한 기본 패키지이다. 고품질의 다양한 정적 혹은 동적인 그래프를 그릴 수 있다. 다른 패키지와의 호환성이 높다.

사이파이 SciPy - 넘파이를 기반으로 구축된 수학과 과학 계산 전문 패키지이다. 미분, 적분, 확률, 선형대수, 최적와 등을 알고리즘으로 구현한다.

사이킷런 scikit-learn - 파이썬의 독보적인 머신러닝 패키지로 넘파이와 사이파이에 크게 의존한다.

 

데이터 마이닝과 머신러닝

데이터 마이닝

데이터에서 패턴 혹은 지식을 추출하는 작업을 말한다. 머신러닝, 통계학, 데이터베이스 시스템과 관련이 많다. 이러한 패턴과 지식은 사람이 의사결정을 내리기 위해 사용된다.

머신러닝

머신러닝은 데이터에서 자동으로 규칙을 학습하여 문제를 해결하는 소프트웨어를 만드는 기술이다. 딥러닝도 머신러닝 알고리즘의 한 종류이다. 데이터 마이닝과 다르게 규칙이나 패턴을 사용하는 주체가 사람이 아닌 컴퓨터이다. 또한, 머신러닝 알고리즘은 결저이 내려진 이유를 알기가 어려운 경우가 많다.


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

코랩은 구글이 대화식 프로그래밍 환경인 주피터 노트북을 커스터마이징한 것으로 웹에서 파이썬 코드를 작성하고 실행할 수 있다. 중요한 패키지를 전부 제공하기에 설치 과정이 필요없다.

작성한 코랩 파일은 노트북이라고 불리며 로그인한 구글 계정의 구글 드라이브에 작업한 파일들이 저장된다. 노트북은 코드 셀과 텍스트 셀로 이루어져 코드 설명과 실행 결과를 한눈에 확인할 수 있다.

 

코드 셀

코드 작성 후 ctrl + enter을 눌러 실행한다.

 

텍스트 셀

 결과

 


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

도서 데이터 찾기

공개 데이터 세트를 통해 시중에 판매되는 전체 도서의 데이터를 분석해보기. 공공데이터포털도서관 정보나루에서 도서관 데이터를 얻을 수 있다.

 

코랩에서 데이터 확인하기

실습에 적합한 CSV 파일을 위주로 사용할 것이다. CSV 파일은 콤마(,)로 구분된 텍스트파일이다. 한 줄이 하나의 레코드 이며, 레코드는 콤마로 구분된 여러 필드로 구성된다.

 

코랩에 데이터 다운로드하기 : gdown 패키지

구글 드라이브에 올려져 있는 도서관 실습파일을 gdown 패키지를 이용하여 가져오기

gdown : 구글 드라이브 등 웹에서 대용량 파일을 다운로드할 수 있는 패키지. 코랩에 이미 설치되어 있다.

 

파이썬으로 CSV 파일 출력하기

CSV 파일은 텍스트 파일이므로 파이썬의 open() 함수로 읽을 수 있다. with() 문으로 파일을 연 다음 readline() 메서드로 파일에서 한 줄을 읽어서 출력할 수 있다.

⇒ UnicodeDecodeError이라는 오류가 발생했다. 파이썬의 open()함수는 텍스트 파일이 UTF-8 형식으로 저장되어있다고 가정한다. 하지만 한글 텍스트는 EUC-KR을 사용하는 경우가 많다.

 

파일 인코딩 형식 확인하기: chardet.detect() 함수

chardet.detect() 함수를 사용하여 문자 인코딩 방식을 알아낼 수 있다. 이미 코랩에 설치되어 있다.

open() 함수로 텍스트 파일을 열 때 mode 매개변수를 바이너리 읽기 모드(인코딩 형식 상관없이 읽기 가능)인 ‘rb’로 지정한다. 그리고 chardet.detect() 함수에 데이터를 넣어서 어떤 인코딩을 사용하는지 확인해보자.

⇒ 현재 UTF-8이 아닌 EUC-KR로 인코딩되어 있는 것을 볼 수 있다.

 

인코딩 형식 지정하기

open() 함수로 파일을 읽어올 때 encoding 매개변수로 인코딩 형식을 EUC-KR로 지정한다.

⇒ 성공적으로 CSV 파일 내용이 출력되었다.

 

데이터프레임 다루기: 판다스

판다스는 CSV 파일을 읽어 행과 열로 데이터프레임이라는 표 형식 데이터로 저장하여 2차원 배열을 표현한다. 데이터프레임은 열마다 다른 데이터타입을 사용할 수 있다.

판다스를 임포트하여 패키지 이름을 간소화하고, read_csv() 함수로 CSV 파일을 읽어온다.

⇒ DtypeWarning: Columns (5, 6, 9)… 경고가 발생했다.

판다스는 CSV 파일을 읽어올 때 특정 열에 어떤 종류의 데이터가 저장되어 있는지 자동으로 파악한다. (예를 들면 ‘도서명’: 문자열, ‘대출건수’: 정수). 이 과정에서 메모리를 효율적으로 사용하기 위해서 CSV 파일을 조금씩 나누어 읽는 과정에서 파악한 데이터 타입이 달라지면 경고가 발생한다.

 

해당 파일에서는 5, 6, 9열( ‘ISBN’, ‘세트 ISBN’, ‘주제분류번호’) 때문에 오류가 발생한 것이다. low_memory 매개변수를 False로 지정하여 파일을 나누어 읽지 않고 한 번에 읽어보자.

⇒ 정상 작동한다.

 

head() 메서드를 사용하여 df의 처음 다섯 개 행을 확인해보자.

 

데이터프레임을 CSV 파일로 저장하기: to_csv() 메서드

판다스의 데이터프레임을 to_csv() 메서드를 사용해 CSV로 저장해보자. 해당 메서드는 기본적으로 UTF-8 형식으로 저장하기 때문에 다시 열 때 encoding 매개변수를 설정하지 않아도 된다.

 

저장한 CSV 파일을 다시 열어보자.

⇒ 앞의 결과와 다르게 CSV 왼쪽에 행 인덱스도 함께 저장되었다. 다시 데이터프레임으로 읽어보자.

 

⇒ 인덱스가 새로 생성되면서 Unnamed: 0 열과 중복된다.

index_col 매개변수로 CSV 파일에 이미 인덱스가 설정되어 있다는 것을 확인한다. (0번째 열)

 

데이터프레임을 CSV로 저장할 때 인덱스를 빼고 저장할 수도 있다.


기본 미션

p. 81의 확인 문제 4번 풀고 인증하기

선택 미션

p. 71~73 남산 도서관 데이터를 코랩에서 데이터프레임으로 출력하고 화면 캡쳐하기

 

Chapter01. 실습파일

혼공데_Chapter01.ipynb
0.04MB