포스트

NumPy 기초 (0) - Introduction

NumPy 기초 0편입니다. Numpy 관련 시리즈 소개와 실습 환경 준비를 다룹니다.

NumPy 기초 (0) - Introduction

데이터 분석 도구를 기초부터 정리하는 NumPy 기초 시리즈의 0편입니다. 시리즈 소개와 실습 환경 준비를 다루며, 본문은 1편부터 시작합니다.

누구를 위한 시리즈인가

이 시리즈는 다음에 해당하는 분들을 대상으로 작성한 글입니다.

  • Python 기본 문법(변수, 리스트, 함수, for문)은 배웠지만 데이터 분석은 처음인 사람
  • import numpy as np를 따라 치기는 했지만 왜 쓰는지는 설명하지 못하는 사람
  • ML 공부를 시작하기 전에 데이터 다루는 기본기부터 잡고 싶은 사람
  • 대학에서 데이터 관련 과목을 들은 사람

반대로 Python 문법 자체가 처음이라면, 기초 문법을 먼저 공부하고 오는 것을 권합니다.

어떻게 진행하는가

데이터 분석의 기초는 크게 Numpy, Pandas, Matplotlib 편으로 진행이 됩니다. 그 중 이 시리즈는 Numpy를 기준으로 진행합니다.

NumPy 기초 (이 시리즈)

주제
(0)시리즈 소개 (이 글)
(1)왜 리스트로는 안 되는가: 벡터화와 dtype
(2)NumPy 배열 다루기: 인덱싱, axis, 브로드캐스팅

Pandas 기초

주제
(0)시리즈 소개
(1)Series와 DataFrame, 데이터 첫 점검
(2)원하는 데이터만 골라 바꾸기: loc, 마스크, 접근자
(3)쪼개고 세고 합치기: groupby, reindex, merge
(4)조용히 틀리는 것들: 결측치, dtype 함정, 버전 관리

Matplotlib 기초

표로 확인한 데이터를 그림으로 보는 시각화 도구를 다룹니다.

주제
(0)시리즈 소개
(1)Figure와 Axes, 그리고 첫 그래프
(2)자주 그리는 그래프들: 분포와 관계
(3)여러 그래프와 꾸미기, pandas 연동

실습 환경 준비

실습 환경은 Google Colab으로 통일합니다. 위 링크에 접속해 구글 계정으로 로그인하면, 별도 설치 없이 브라우저만으로 실습할 수 있습니다. Colab에서 “새 노트북”을 만들면 NumPy와 pandas가 이미 설치되어 있습니다.

새 노트북 셀에 아래 코드를 입력하고 Shift+Enter를 눌러 실행합니다. 에러 없이 버전 두 개가 출력되면 준비가 끝난 것입니다.

1
2
3
4
import numpy as np
import pandas as pd

np.__version__, pd.__version__   # ('2.x.x', '2.x.x')

실습 데이터

실습 데이터는 한 학생의 대학교 성적 CSV 파일 하나입니다. 가상의 데이터로, 2022학년도 1학기부터 2030학년도 2학기까지 열여덟 학기의 시험 기록을 담고 있습니다. 한 행은 한 과목의 한 시험(중간고사 또는 기말고사)에 해당하며, 전체는 496행 8컬럼입니다. 각 컬럼의 의미는 아래와 같습니다.

컬럼내용
과목명수강 과목 이름. F를 받고 재수강한 과목은 두 학기에 두 번 등장
이수구분전공필수 / 전공선택 / 교양
학점1~3
수강학기2022-1 ~ 2030-2
시험구분중간고사 / 기말고사
시험일시2022-04-18 13:00 형식, 분 단위까지
성적0~100 정수. 병결로 응시하지 못한 시험 2건은 빈칸
평점과목 단위 등급(A+~F). 한 과목의 두 행에 같은 값이 반복

pandas는 URL에서 바로 CSV를 읽을 수 있어서, 아래 코드가 Colab에서 그대로 동작합니다. CSV를 읽는 법은 Pandas 기초 1편에서 자세히 다루므로 지금은 이 정도면 충분합니다.

1
2
3
4
import pandas as pd

df = pd.read_csv("https://blog.hoseunggg.com/assets/data/grades.csv")
scores = df["성적"].to_numpy()

앞서 말한 496행 8컬럼이 맞는지, 데이터가 어떻게 생겼는지 확인해봅시다.

1
2
df.shape   # (496, 8)
df.head()  # 앞 5행 미리보기

df.head()를 실행하면 앞 5행이 아래처럼 나옵니다.

 과목명이수구분학점수강학기시험구분시험일시성적평점
0대학영어교양22022-1중간고사2022-04-18 13:00100.0A+
1미적분학1전공필수32022-1중간고사2022-04-18 16:3082.0B0
2통계학입문전공필수32022-1중간고사2022-04-19 10:3089.0B+
3컴퓨팅사고와프로그래밍전공필수32022-1중간고사2022-04-19 15:0090.0B+
4대학글쓰기교양22022-1중간고사2022-04-19 15:0076.0C+

환경과 데이터가 준비됐으면 1편부터 시작해봅시다.

다음 글: NumPy 기초 (1) - 왜 리스트로는 안 되는가

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.