[혼공분석] 1주차

LeeHsss·2025년 1월 7일
0

데이터 분석

목록 보기
1/9
post-thumbnail

Ch 01. 데이터 분석을 시작하며

데이터 분석이란?

유용한 정보를 발견하고 결론을 유추하거나, 의사 결정을 돕기 위해 데이터를 조사, 정제, 변환, 모델링하는 과정

데이터 과학이란?

데이터 분석과 자주 언급되는 데이터 과학은 통계학, 데이터 분석, 머신러닝, 데이터 마이닝 등을 아우르는 큰 개념

  • 데이터 마이닝: 데이터에서 패턴 혹은 지식을 추출하는 작업

데이터 분석과 데이터 과학의 차이점
데이터 분석은 올바른 의사 결정을 돕기 위한 통찰을 제공하는데 초점을 맞추고, 데이터 과학은 문제 해결을 위한 최선의 솔루션을 만드는데 초점을 맞춘다.

데이터 분석에 대표적으로 사용하는 파이썬 패키지

  1. Numpy
    • 고성능 과학 계산과 다차원 배열을 위한 파이썬 패키지
  2. pandas
    • 데이터 분석을 위한 전문 패키지
    • 넘파이 배열과 다르게 Excel의 Sheet처럼 숫자와 문자를 섞어서 표 형태로 저장할 수 있는 데이터 프레임을 사용
  3. matplolib
    • 파이썬 데이터 시각화를 위한 기본 패키지
    • 정적 혹은 동적인 그래프를 그릴 수 있으며, 다양한 그래프를 제공
  4. Scipy
    • 넘파이를 기반으로 구축된 수학과 과학 계산 전문 패키지
    • 미분, 적분, 확률, 선형대수, 최적화 등을 알고리즘으로 구현
  5. scikit-learn
    • 파이썬의 독보적인 머신러닝 패키지
    • 넘파이와 사이파이에 크게 의존

데이터 확인하기 - 도서 대출 데이터

gdown: 구글 드라이브를 포함하여 웹에서 대용량 파일을 다운로드할 수 있는 패키지

import gdown
gdown.download('https://bit.ly/3eecMKZ', '남산도서관 장서 대출목록 (2021년 04월).csv', quiet=False)

코랩을 사용하면 gdown 패키지가 코랩에 이미 설치 되어 있기 때문에 추가로 설치할 필요가 없지만, jupyter를 사용하면 추가로 패키지를 설치 해야 한다.

jupyter에서는 ! pip 명령어를 통해 파이썬에 필요한 패키지를 쉽게 다운로드 할 수 있다.

  • jupyter에서 !! 이후에 나오는 내용들을 커맨드 창에서 입력하는 것과 동일하게 처리하는 의미를 가진다.

파이썬으로 csv 파일 출력하기

  • csv 파일은 텍스트 파일이므로, 파이썬의 open() 함수로 읽을 수 있다.
with open('남산도서관 장서 대출목록 (2021년 04월).csv') as f:
	print(f.readline())

with 구문

  • with 문은 python에서 파일이나 리소스 관리와 관련된 작업을 간편하게 수행할 수 있도록 사용 하는 구문
  • 주로 파일 열기, 네트워크 연결, 데이터 베이스 연결 등과 같이 리소스를 사용한 후에 반드시 해제해야 하는 경우에 사용

readline()

  • 파일에서 텍스트를 한 줄 읽는 함수

💡 파이썬의 open() 함수는 기본적으로 텍스트 파일이 UTF-8 형식으로 저장되어 있다고 가정하지만, 한글 텍스트는 EUC-KR 형식을 사용하는 일이 많습니다.

파일 인코딩 형식 확인하기 : chardet.detect() 함수
  • chardet.detect() 함수를 사용하면 문자 인코딩 방식을 알아낼 수 있다.
  • binary 읽기 모드인 'rb' 모드로 텍스트 파일을 읽으면 문자 인코딩 형식에 상관 없이 파일을 열 수 있다.
import chardet

with open('남산도서관 장서 대출목록 (2021년 04월).csv', mode='rb') as f:
	d = f.readline()
    
print(chardet.detect(d))
// 출력
{'encoding': 'EUC-KR', 'confidence': 0.99, 'language': 'Korean'}
인코딩 형식 지정하기: encoding parameter
with open('남산도서관 장서 대출목록 (2021년 04월).csv', encoding='EUC-KR') as f:
	print(f.readline())
// 출력
번호,도서명,저자,출판사,발행년도,ISBN,세트 ISBN,부가기호,권,주제분류번호,도서권수,대출건수,등록일자,

"1","인공지능과 흙","김동훈 지음","민음사","2021","9788937444319","","","","","1","0","2021-03-19",

데이터프레임 다루기: 판다스(pandas)

판다스는 CSV 파일을 읽어 데이터프레임(Data Frame)이라는 표 형식 데이터로 저장한다.
판다스에는 시리즈(Series)라는 데이터 구조도 있다.

  • 데이터 프레임은 열마다 다른 데이터 타입을 사용할 수 있지만 시리즈에 담긴 데이터는 모두 같은 타입이어야 합니다.
    데이터 프레임의 하나의 열(row) = 시리즈 객체
csv 파일을 데이터프레임으로 읽기: read_csv() 함수
  • 판다스(pandas)에서 csv 파일을 읽을 때 사용하는 함수
  • 파이썬에서는 관례적으로 pandas 패키지를 import하고 as 키워드로 임포트할 패키지 이름을 변경한다. (관례적으로 pd를 사용)
# csv 파일 읽기 예제
import pandas as pd

df = pd.read_csv('남산도서관 장서 대출목록 (2021년 04월).csv', encoding='EUC-KR')

코드를 실행하면 아래와 같은 오류가 발생 합니다.

DtypeWarning: Columns (5,6,9) have mixed types. Specify dtype option on import or set low_memory=False.

오류가 발생하는 원인은 판다스는 CSV 파일을 읽을 때 '도서명'과 '대출건수' 같은 열에 어떤 종류의 데이터가 저장되어 있는지 자동으로 파악하는데 메모리를 효율적으로 사용하기 위해 CSV 파일을 조금씩 나누어 읽는다. 이 때 자동으로 파악한 데이터 타입이 달라지면 경고가 발생 합니다.

위와 같은 문제를 해결하기 위해서는 크게 2가지 해결 방법이 존재 합니다.

    1. Specify dtype option on import
    1. set low_memory=False

💡 dtype 매개변수로 데이터 타입을 지정
- 열의 데이터 타입을 자동으로 찾지 않도록 데이터 타입을 지정

💡 low_memory 매개변수를 False로 지정
- 파일을 나누어 읽지 않고 한 번에 읽기.
- 파일을 한 번에 모두 읽기 때문에 많은 메모리를 사용.

# dtype 매개변수 사용 예제
import pandas as pd

df = pd.read_csv('남산도서관 장서 대출목록 (2021년 04월).csv', encoding='EUC-KR', dtype={'ISBN' : str, '세트 ISBN' : str, '주제분류번호' : str})
데이터프레임 확인: head() 함수
  • 데이터프레임의 처음 다섯 개 행을 확인할 때 사용함.
import pandas as pd

dt = pd.read_csv('남산도서관 장서 대출목록 (2021년 04월).csv', encoding='EUC-KR', dtype={'ISBN' : str, '세트 ISBN' : str, '주제분류번호' : str})
dt.head()

💡CSV의 첫 번째 행은 열 이름으로 인식합니다. 만약 CSV 파일의 첫 번째 행이 열 이름이 아니라면, read_csv() 함수를 호출할 떄 header 매개변수를 None으로 지정하고, names 매개변수에 열 이름 리스트를 따로 전달해 줍니다. 이 때 names 매개변수에 전달하는 열 이름에 중복된 이름이 있어서는 안 된다.

데이터프레임을 CSV 파일로 저장하기: to_csv() 함수
  • pandas의 데이터프레임을 CSV로 저장할 때 사용함.
  • to_csv() 함수는 기본적으로 UTF-8 형식으로 저장함.

💡to_csv() 함수를 사용해서 저장하면 데이터프레임에 행 인덱스가 함께 저장된다. 그래서 데이터프레임을 저장한 csv파일을 다시 데이터프레임으로 읽으면 인덱스 열이 추가로 생성이 된다.

  • CSV 파일에 인덱스가 이미 있다는 것을 알려주려면 : index_col 매개변수 사용
  • 데이터프레임을 CSV 파일로 저장할 때, 인덱스를 빼고 저장하려면: index 매개변수를 False로 지정

숙제.

필수 숙제

판다스 read_csv() 함수의 매개변수 설명이 옳은 것은 무엇인가요?

1. header 매개변수의 기본값은 1로 csv 파일의 첫 번째 행을 열 이름으로 사용합니다.
	- header 매개변수의 기본값은 0 (첫번째 행) 입니다.
2. names 매개변수에 행 이름을 리스트로 지정할 수 있습니다.
	- 열 이름을 리스트로 지정할 수 있습니다.
3. encoding 매개변수에 csv 파일의 인코딩 방식을 지정할 수 있습니다. 💡(정답)
4. dtype 매개변수를 사용하려면 모든 열의 데이터 타입을 지정해야 합니다. 
	- 특정 열의 데이터 타입만 지정해도 됩니다.

추가 숙제

남산 도서관 데이터를 코랩에서 데이터프레임으로 출력하고 화면 캡처하기


ref.) 공공 데이터 세트를 찾을 수 있는 대표 사이트

  1. 국내 사이트
  1. 해외 사이트
profile
조금씩 지식의 영역을 넓혀가는 중이에요...😌

0개의 댓글

관련 채용 정보