[혼공분석] 1주차: 데이터 분석을 시작하며
저번 학기에 데이터 분석 수업을 듣고 아쉬움이 남아 시작하게 되었다!
6주차 완주까지 아자아자 ~
Chapter 01. 데이터 분석을 시작하며
01-1. 데이터 분석이란
데이터 분석
: 유용한 정보를 발견, 결론을 유추하거나, 의사 결정을 돕기 위해 데이터를 조사, 정제, 변환, 모델링하는 과정
- 범주: 비교적 소규모
- 목표: 의사 결정을 돕기 위한 통찰을 제공하는 일, 올바른 질문을 하기 위해
- 주요 기술: 컴퓨터 과학, 통계학, 시각화 등
- 빅데이터: 사용
→ 다양한 접근 방법과 형태로 여러 비즈니스와 과학 분야에서 사용
- 기술통계: 관측이나 실험을 통해 수집한 데이터를 정량화하거나 요약하는 기법
- 탐색적 데이터 분석: 데이터를 시작적으로 표현하여 주요 특징을 찾고 분석하는 방법
- 가설검정: 주어진 데이터를 기반으로 특정 가정이 합당한 지 평가하는 통계 방법
데이터 과학
: 통계학 데이터 분석, 머신러닝, 데이터 마이닝 등을 아우르는 큰 개념
- 범주: 대규모
- 목표: 문제 해결을 위해 최선의 솔루션을 만드는 일
- 주요 기술: 컴퓨터 과학, 통계학, 머신러닝, 인공지능 등
- 빅데이터: 사용
데이터 분석과 데이터 과학의 가장 큰 차이점은 '결과물'
→ 데이터 분석은 올바른 의사 결정을 돕는 '통찰'을, 데이터 과학은 문제 해결을 위한 최선의 '솔루션'을
Data Science vs. Data Analytics — What's the difference?
What Is Data Science? What Is Data Analytics? What Is the Difference? Big data has become a major component in the tech world today thanks to the
www.sisense.com
데이터 분석가
: 프로그래밍 기술을 갖추고 있고 통계학을 이해하면서 정보를 시각적으로 잘 표현할 수 있는 사람
→ 프로그래밍, 수학 ・ 통계, 도메인 지식을 모두 갖추어야 !
→ 넓은 의미에서는 데이터 수집, 처리, 정제, 모델링 / 좁은 의미에서는 기술통계, 탐색적 데이터 분석, 가설검정까지의 과정
데이터 분석에 많이 사용하는 프로그래밍 언어: 파이썬 & R
파이썬: 범용 프로그래밍 언어로, 데이터 분석이나 머신러닝에서 표준 언어처럼 사용
→ 데이터 처리에 사용할 패키지 풍부
R: 통계 계산을 위해 개발된 언어로 범용 프로그래밍 언어는 아님
→ 많은 통계 패키지와 그래프를 위한 도구를 제공
→ 데이터 수집, 전처리 등 수행하기 까다롭고 만들어진 모델을 제품 환경에 적용 어려움
구글 코랩: 프로그래밍 환경
Google Colab
colab.research.google.com
파이썬 필수 패키지
- 넘파이(numpy): 고성능 과학 계산과 다차원 배열을 위한 파이썬 패키지
- 판다스(pandas): 파이썬 데이터 분석을 위한 전문 패키지
- 맷플롯립(matplotlib): 파이썬 데이터 시각화를 위한 기본 패키지
- 사이파이(SciPy): 넘파이를 기반으로 구축된 수학과 과학 계산 전문 패키지
- 사이킷런(scikit-learn): 머신러닝 패키지로 전체 제이터 과학 분야에서 가정 널리 사용하는 머신러닝 패키지
01-2. 구글 코랩과 주피터 노트북
코랩
: 구글이 주피터 노트북을 커스터마이징 한 것으로 웹 브라우저에서 파이썬 코드 작성 및 실행 가능
→ 클라우드 기반 서비스로 설치 불필요
*주피터 노트북: 대화식 프로그래밍 환경
노트북
: 작성한 코랩 파일
셀
: 코드 또는 텍스트의 덩어리, 코랩에서 실행할 수 있는 최소 단위
→ 텍스트 셀: HTML과 마크다운 혼용 사용
→ 코드 셀: 마지막 라인의 실행 결과를 셀 아래에 출력
런타임
: 구글 클라우드에서 제공하는 가상 서버
01-3. 이 도서가 얼마나 인기가 좋을까요?
01-3.ipynb
Run, share, and edit Python notebooks
colab.research.google.com
CSV 파일
: 콤마(,)로 구분된 텍스트 파일
→ 한 줄이 하나의 레코드 (행)
→ 레코드는 콤마로 구분된 여러 필드로 구성 (열)
응용 프로그램을 사용해 파일 내용을 확인해야 하는 엑셀 파일보다 단순한 텍스트 파일인 CSV 파일을 더 선호 !
gdown 패키지 이용하여 코랩에 데이터 다운로드하기
import gdown #웹에서 대용량 파일을 다운로드할 수 있는 패키지
gdown.download('https://bit.ly/3eecMKZ', '남산도서관 장서 대출목록 (2021년 04월).csv', quiet=False)
open( ) 함수로 CSV 파일 출력하기
with open('남산도서관 장서 대출목록 (2021년 04월).csv') as f:
print(f.readline()) #파일에서 한 줄 읽어 출력
UnicodeDecodeError 발생: UTF-8 코덱이 어떤 바이트를 읽을 수 없음
인코딩: 문자를 컴퓨터가 이해할 수 있는 0과 1의 이진 형태로 바꾸는 것
- UTF-8: 전 세계 모든 문자를 컴퓨터에 표현하기 위해 만들어진 유니코드를 인코딩하는 방식
- EUC-KR: 한글 완성형 인코딩
chardet 패키지의 chardet.detect( ) 함수를 통해 문자 인코딩 방식 알아내기
import chardet
with open('남산도서관 장서 대출목록 (2021년 04월).csv', mode='rb') as f:
d = f.readline()
print(chardet.detect(d))
open( ) 함수 mode 매개 변수의 기본값은 텍스트 읽기 모드 'r'
→ 'rb': 바이너리 읽기 모드 (문자 인코딩 형식에 상관없이 파일을 열 수 있음)
open( ) 함수는 텍스트 파일이 UTF-8 형식으로 저장되어 있다 가정
→ UTF-8 형식이 아닌 EUC-KR 형식의 텍스트 파일이라 open( ) 함수에서 오류 발생
인코딩 형식 지정하여 CSV 파일 출력하기
with open('남산도서관 장서 대출목록 (2021년 04월).csv', encoding='EUC-KR') as f:
print(f.readline())
print(f.readline())
read_csv( ) 함수 이용해 CSV 파일을 데이터프레임으로 읽기
import pandaas as pd #as 키워드로 pandas 패키지 이름을 pd로 변경
df = pd.read_csv('남산도서관 장서 대출목록 (2021년 04월).csv', encoding='EUC-KR', low_memory=False)
판다스는 CSV 파일을 읽을 때 메모리를 효율적으로 사용하기 위해 파일을 조금씩 나누어 읽음
→ 판다스가 자동으로 파악한 데이터 타입이 달라지면 경고 발생 !
→ low_memory=False 로 지정하여 파일을 나누어 읽지 않고 한 번에 읽도록 하여 해결
head( ) 메소드 사용하여 데이터프레임 처음 다섯 개 행 확인하기
df.head() #( )안에 숫자 미입력 시 5개 출력
데이터프레임
: 2차원 배열로 행과 열로 구성
시리즈
: 1차원 배열로 담긴 데이터는 모두 동일한 종류여야 함
인덱스: 데이터프레임의 첫 번째 열
→ CSV 파일에 이미 인덱스가 있다면 index_col 매개변수를 0으로 지정
열 이름: 데이터프레임의 첫 번째 행
→ CSV 파일의 첫 행이 열 이름이 아니라면
read_csv( ) 함수 호출 시 header 매개변수를 None으로 지정, names 매개변수에 열 이름 리스트(중복 이름 없어야 함) 전달
to_csv( ) 메서드 이용하여 데이터프레임 CSV 파일로 저장
df.to_csv('ns_202104.csv', index=False)
index=False 지정하여 인덱스 제외하고 저장
pandas.read_csv('파일 이름', header=, names=[ ], index=col=, encoding=, low_memory=, dtype=)
DataFrame.head(출력하고 싶은 행 개수)
DataFrame.to_csv('파일 이름', index=, encoding=)