데이터 분석이란?
- 위키피디아에서는 데이터 분석이란 '유용한 정보를 발견하고 결론을 유추하거나, 의사 결정을 돕기 위해 데이터를 조사,정제,변환,모델링하는 과정'으로 정의하고 있다.
- 데이터 분석과 함께 자주 언급되는 용어는 데이터 과학으로, 데이터 과학이 데이터 분석보다 더 큰 개념으로 볼 수 있다.
- 데이터 분석은 통계학과 관련이 많다. 통계적 관점에서 보면 데이터 분석은 크게 기술통계, 탐색적 데이터 분석, 가설검정으로 나눌 수 있을 것이다.
- 기술통계: 관측이나 실험을 통해 수집한 데이터를 정량화하거나 요약하는 기법
- 탐색적 데이터 분석: 데이터를 시각적으로 표현하여 주요 특징을 찾고 분석하는 방법
- 가설검정: 주어진 데이터를 기반으로 특정 가정이 합당한지 평가하는 통계 방법
[데이터 분석과 데이터 과학의 차이]
데이터 분석
범주: 비교적 소규모
목표: 의사 결정을 돕기 위한 통찰을
제공하는 일
주요 기술: 컴퓨터과학, 통계학, 시각화 등
데이터 과학
범주: 대규모
목표: 문제 해결을 위해 최선의 솔루션을
만드는 일
주요 기술: 컴퓨터 과학, 통계학, 머신러닝, 인공지능 등
- 데이터 과학은 통계학, 머신러닝, 데이터 마이닝, 데이터 분석 등을 아우르는 큰 개념
더보기
데이터 마이닝이란?
데이터에서 패턴 혹은 지식을 추출하는 작업을 의미
데이터 분석가의 작업 과정
- 넓은 의미의 데이터 분석
- 데이터 수집
- 데이터 처리
- 데이터 정제
- 모델링
- 좁은 의미의 데이터 분석
- 기술통계
- 탐색적 데이터 분석
- 가설검정
데이터 분석을 위한 도구(파이썬 필수 패키지)
데이터 분석에 많이 사용하는 프로그래밍 언어는 파이썬과 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)
정리 및 필수 숙제
- 데이터 분석은 데이터를 수집, 처리, 정제,분석, 모델링하여 의사 결정을 내리는 데 도움을 주는 작업
- 데이터 과학은 데이터 분석, 머신러닝을 아우르는 개념
- 파이썬 필수 패키지는 numpy,pandas,matplotlib,scipy,scikit-learn 등이 있다.
- csv 파일은 콤마(,)로 구분된 텍스트 파일
- pandas는 표 형식 데이터를 위한 편리한 도구를 다양하게 제공하는 강력한 데이터 분석 패키지
- 데이터 프레임은 pandas의 핵심 데이터 구조로 행과 열로 구성
- pd.read_csv() -csv파일을 읽어 데이터 프레임을 만듦
- df.head()- 데이터프레임에서 첫 5행을 반환 df.tail()은 데이터프레임에서 마지막 5행을 반환한다.
- df.to_csv() - 데이터프레임을 csv파일로 저장
'공부 > python' 카테고리의 다른 글
혼자 공부하는 데이터 분석 3주차: 데이터 정제하기 (0) | 2024.07.21 |
---|---|
혼자 공부하는 데이터 분석 2주차: 데이터 수집하기 (0) | 2024.07.14 |
알고리즘 BFS(너비우선탐색) (0) | 2023.11.24 |
enumerate (0) | 2023.11.23 |
IQR 이상치 (0) | 2023.11.04 |