[혼공분석] 1주차_Ch.01_데이터 분석을 시작하며

JIN A·2024년 1월 3일
0

혼자 공부하는 데이터 분석 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()) 
  • 한글 인코딩 오류 발생
    텍스트 파일은 주로 UTF-8 형식으로 저장하지만,
    한글 텍스트는 주로 완성형 인코딩인 EUC-KR을 사용
    : 해당 파일을 오류 없이 출력하려면 매개변수 지정하기 (encoding='EUC-KR')
# 문자 인코딩 방식 확인하기
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)

  • NFC 방식(글자 단위 저장) : '혼공' - 윈도우, 리눅스
  • NFD 방식(자음,모음 각각 저장) : 'ㅎㅗㄴㄱㅗㅇ' - 맥OS

맥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)
profile
CHEER UP :)

0개의 댓글