✅혼자 공부하는 데이터 분석 with 파이썬
진도 : Chapter 01
실습파일 : Library.ipynb
(완료) 기본 미션 : p. 81의 확인 문제 4번 풀고 인증하기
(완료) 선택 미션 : p. 71 ~ 73 남산 도서관 데이터를 코랩에서 데이터프레임으로 출력하고 화면 캡처하기
✅Chapter 01 데이터 분석을 시작하며
데이터 과학 : 통계학, 데이터 분석, 머신러닝, 데이터 마이닝 등을 아우르는 큰 개념
(프로그래밍 / 통계학 / 시각화 / 비즈니스 감각 필요)
=> 데이터 역량은 물론, 도메인 지식과 비즈니스 솔루션 제공이 중요하다.
데이터 분석
Descriptive Statistics 기술통계,
EDA : Exploratory Data Analysis 탐색적 데이터 분석,
Hypothesis testing 가설검정
+) 데이터 수집, 전처리, 정제, 분석, 모델링
파이썬 패키지 웹사이트 : https://pypi.org
=> 대표 패키지 : Numpy, Pandas, Matplotlib, Scipy, Scikit-learn
엑셀 파일 패키지 : openpyxl, xlsxwriter
# openpyxl 패키지 사용하는 경우 (기본)
df.to_excel()
# xlsxwriter 패키지 사용하는 경우 (한글데이터 오류 날 때)
메서드에 별도 엔진을 지정해준다.
!pip install xlsxwriter
df.to_excel('파일명.xlsx', index=False, engine='xlsxwriter')
✅실습
1. 데이터 준비 단계
: 데이터 찾기 / CSV 파일 구조 살펴보기 / gdown 패키지로 파일 다운로드 실습
# 구글에서 코랩으로 파일 다운로드
gdown.download('파일 경로', '파일명.확장자', quiet=)
# quiet=False는 다운로드 과정 중에 자세한 출력이나 진행 정보를 보고 싶다는 것을 나타냅니다.
만약 True로 설정하면 함수는 많은 정보 없이 조용하게 실행됩니다.
2. 파이썬 - CSV 파일 출력
# csv 파일 출력
with open('파일명.csv') as f:
# 파일에서 한 줄 출력해보기
print(f.readline())
# 문자 인코딩 방식 확인하기
import chardet
with open('파일명.csv', mode='rb') as f:
d=f.readline()
print(chardet.detect(d))
---
# chardet is short for "character encoding detector."
# binary읽기모드 'rb' : 문자 인코딩 형식 상관없이 읽음
# 모든 글자를 1바이트로 인식하기 때문에 한글과 같은 유니코드 문자를 화면에 잘 출력하진 못함
3. 판다스 - 데이터 프레임으로 읽기
판다스는 Series라는 데이터 구조가 있다.
-1차원 배열과 유사.
-이에 담긴 데이터 타입은 모두 동일해야 함.
판다스는 DataFrame이라는 데이터 구조가 있다.
-csv 파일을 읽어 df라는 표 형식 데이터(tabular data)로 저장한다.
-엑셀 시트 같이 행,열로 구성된 2차원 배열. + 인덱스!
-이에 담긴 데이터 타입은 '같은 열'에 한해 동일해야함. (열별로 다른 데이터 타입 사용 가능)
-각각의 열은 시리즈 객체라고 할 수 있다.
메모리를 효율적으로 사용하기 위해 csv파일을 조금씩 나누어 읽는데, 이때 자동으로 파악한 데이터 타입이 달라지면 경고가 발생한다. 매개변수를 지정하여 파일을 한 번에 읽도록 하자.
low_memory=False
판다스는 행마다 0부터 시작하는 인덱스 번호를 자동으로 부여한다. csv의 첫 번째 행은 열 이름으로 인식한다.
첫 행이 열 이름이 아닌 경우 매개변수를 지정하자.
header=None : 첫 행에 열 이름이 없음을 알림
names=[열 이름 목록] : 열 이름 리스트를 따로 전달해 줌
csv 파일에 각 행별로 마지막에 있는 줄바꿈 문자 ','를 처리하지 않은 경우, Unnamed 열이 자동으로 인식되어 추가된다.
별도로 전처리하기!
end='' 를 통해 줄바꿈 문자인 ','를 공백으로 출력
# csv 파일 읽기
df = pd.read_csv('파일명.csv',encoding=,low_memory=)
> read_table() 함수는 read_csv(sep='\t')과 같다.
탭으로 구분된 파일 읽기
# 파일 첫 다섯개 행 출력
df.head()
# 데이터프레임을 csv 파일로 저장하기 (기본적으로 UTF-8 형식)
df.to_csv('파일명.csv')
---
with open('ns_202104.csv') as f:
for i in range(3):
print(f.readline(), end='') # end= 줄바꿈 문자 지정
인덱스가 지정되어 있는 파일을 읽을 때
index_col=0 매개변수 지정 (첫 번째 열(0)을 인덱스로 지정)
인덱스를 지정하지 않고 파일을 저장하기
index=False 매개변수 지정
한글을 유니코드로 표현할 때 (p69)
맥OS 사용자에게 파일을 받았거나 NFD 방식의 이름인 경우 다음 코드를 실행하여 NFC 방식의 이름으로 바꿀 수 있다.
(코랩의 파일 브라우저나 주피터 노트북은 NFD여도 NFC처럼 보이므로 주의)
import os
import glob
import unicodedata
for filename in glob.glob('*.csv'):
nfc_filename = unicodedata.normalize('NFC', filename)
os.rename(filename, nfc_filename)