0. 1주차 학습 목표
- 데이터 분석 vs 데이터 과학 비교하기
- 구글 코랩 & 주피터 노트북 다뤄보기
- 판다스를 사용해 데이터 다운로드 (1주차-3)
데이터 분석으로 비즈니스 문제를 어떻게 해결하는지 알아보기 위해 가상의 예를 소개하는 실습 챕터. 문제에 맞는 데이터 구하고 코랩에서 판다스 데이터프레임으로 CSV 파일 읽고 쓰는 방법을 배움.
1. 데이터 확인
- 엑셀 파일 (.xlsx) 대신 *CSV(comma-separated values) 파일 사용.
- 한 줄이 하나의 레코드 (record). 레코드는 콤마로 구분된 여러 필드로 구성.
- CSV 파일은 일반 텍스트 편집기에서도 열어볼 수 있는데, 행은 한 줄로 표현, 열은 콤마로 구분.
2. 코랩에 데이터 다운로드: gdown 패키지 (24.05 남산도서관 파일)
gdown 패키지는 구글 드라이브를 포함하여 웹에서 대용량 파일을 다운로드할 수 있는 패키지.
import gdown
gdown.download('https://www.data4library.kr/comn/fileDownload?cn=290495',
'남산도서관 장서 대출목록 (2024년 05월).csv', quiet=False)
3. 파이썬으로 CSV 파일 출력하기
with open('남산도서관 장서 대출목록 (2024년 05월).csv') as f:
print(f.readline())
4. 파일 인코딩 형식 확인하기: chardet.detect() 함수
import chardet
with open('남산도서관 장서 대출목록 (2024년 05월).csv', mode='rb') as f:
d = f.readline()
print(chardet.detect(d))
Q. 인코딩, UTF-8, EUC-KR?
A. 인코딩 (encoding) 혹은 문자 인코딩은 문자를 컴퓨터가 이해할 수 있는 0과 1의 이진 형태로 바꾸는 것을 의미.
UTF-8은 전 세계 모든 문자를 컴퓨터에 표현하기 위해 만들어진 유니코드를 인코딩하는 방식 중 하나, 최대 4바이트까지 사용.
EUC-KR은 한글을 위한 완성형 인코딩 중 하나로 2바이트를 사용.
5. 인코딩 형식 지정하기
with open('남산도서관 장서 대출목록 (2024년 05월).csv', encoding='EUC-KR') as f:
print(f.readline())
print(f.readline())
6. 데이터 프레임 다루기: 판다스 | CSV 파일을 데이터프레임으로 읽기: read_csv()
판다스는 CSV 파일을 읽어 데이터프렘이라는 표 형식 데이터(행과 열의 구조)로 저장한다.
import pandas as pd
df = pd.read_csv('남산도서관 장서 대출목록 (2024년 05월).csv', encoding='EUC-KR')
앞에서 남산도서관 데이터가 EUC-KR로 저장되어 있는 것을 알았으므로 encoding 매개변수를 'EUC-KR'로 지정한다.
코드를 실행하면, 아래와 같은 오류가 발생한다.
DtypeWarning:Columns (5,6,9) have mixed types. Specify dtype option on import or set low_memory=False
판다스는 CSV 파일을 읽을 때 '도서명' 과 '대출건수' 같은 열에 어떤 종류의 데이터가 저장되어 있는지 자동으로 파악한다. 도서명은 문자열, 대출건수는 정수형. 메모리를 효율적으로 사용하기 위해 파일을 나눠 읽는데, 자동으로 파악한 데이터 타입이 달라지면 경고가 발생한다.
df = pd.read_csv('남산도서관 장서 대출목록 (2024년 05월).csv', encoding='EUC-KR',
low_memory=False)
low_memory 매개변수를 False로 지정하여 파일을 나누어 읽지 않고 한번에 읽도록 한다.
Q. dtype 매개변수?
A. low_memory 매개변수를 False로 지정하면 경고는 발생하지 않지만, 파일을 한번에 읽기 때문에 많은 메모리를 사용한다. 다른 방법은 열의 데이터 타입을 자동으로 찾지 않도록 아예 dtype 매개변수로 데이터 타입을 지정하는 것이다. 아래는 참고 코드.
df = pd.read_csv('남산도서관 장서 대출목록 (2024년 05월).csv', encoding='euc-kr',
dtype={'ISBN':str, '세트 ISBN':str, '주제분류번호':str])
import gdown
gdown.download('<https://www.data4library.kr/comn/fileDownload?cn=290495>',
'남산도서관 장서 대출목록 (2024년 05월).csv', quiet=False)
with open ('남산도서관 장서 대출목록 (2024년 05월).csv', encoding='EUC-KR') as f:
print(f.readline())
print(f.readline())
Q. 파이썬에서 엑셀 파일은 사용할 수 없나?
A. 사용할 수 있다. 여러 가지 패키지가 있는데, 대표적으로 openxyl 패키지와 xlsx 패키지가 있다. 판다스 패키지도 read_csv() 함수로 엑셀 파일을 읽을 수 있으나, 데이터 과학 분야에서는 더 단순한 텍스트 파일 (CSV) 선호한다.
🌀 기본 과제 pg 81
#04. 판다스 read_csv() 함수의 매개변수 설명이 옳은 것은 무엇인가요?
1. header 매개변수의 기본값은 1로 CSV 파일의 첫 번째 행을 열 이름으로 사용합니다.
→ X. header 매개변수의 기본값은 0으로, 첫 번째 행(0번째 인덱스)을 열 이름으로 사용. 만약 header=None으로 설정하면, 열 이름이 없는 것으로 간주.
2. names 매개변수에 행 이름을 리스트로 지정할 수 있습니다.
→ X. names 매개변수는 열 이름을 리스트로 지정하는 데 사용. 행 이름을 지정하는 것이 아님.
3. encoding 매개변수에 CSV 파일의 인코딩 방식을 지정할 수 있습니다.
→ O. encoding 매개변수를 사용하여 CSV 파일의 인코딩 방식을 지정할 수 있음. (encoding='utf-8' )
4.ndtype 매개변수를 사용하려면 모든 열의 데이터 타입을 지정해야 합니다.
→ X. dtype 매개변수는 특정 열의 데이터 타입만 지정할 수 있음. 모든 열의 데이터 타입을 지정할 필요는 없음.
🌀 추가 과제 pg 71-73 #데이터