NumPy 기초 (0) - Introduction
NumPy 기초 0편입니다. Numpy 관련 시리즈 소개와 실습 환경 준비를 다룹니다.
데이터 분석 도구를 기초부터 정리하는 NumPy 기초 시리즈의 0편입니다. 시리즈 소개와 실습 환경 준비를 다루며, 본문은 1편부터 시작합니다.
누구를 위한 시리즈인가
이 시리즈는 다음에 해당하는 분들을 대상으로 작성한 글입니다.
- Python 기본 문법(변수, 리스트, 함수, for문)은 배웠지만 데이터 분석은 처음인 사람
import numpy as np를 따라 치기는 했지만 왜 쓰는지는 설명하지 못하는 사람- ML 공부를 시작하기 전에 데이터 다루는 기본기부터 잡고 싶은 사람
- 대학에서 데이터 관련 과목을 들은 사람
반대로 Python 문법 자체가 처음이라면, 기초 문법을 먼저 공부하고 오는 것을 권합니다.
어떻게 진행하는가
데이터 분석의 기초는 크게 Numpy, Pandas, Matplotlib 편으로 진행이 됩니다. 그 중 이 시리즈는 Numpy를 기준으로 진행합니다.
NumPy 기초 (이 시리즈)
Pandas 기초
| 편 | 주제 |
|---|---|
| (0) | 시리즈 소개 |
| (1) | Series와 DataFrame, 데이터 첫 점검 |
| (2) | 원하는 데이터만 골라 바꾸기: loc, 마스크, 접근자 |
| (3) | 쪼개고 세고 합치기: groupby, reindex, merge |
| (4) | 조용히 틀리는 것들: 결측치, dtype 함정, 버전 관리 |
Matplotlib 기초
표로 확인한 데이터를 그림으로 보는 시각화 도구를 다룹니다.
실습 환경 준비
실습 환경은 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 | 대학영어 | 교양 | 2 | 2022-1 | 중간고사 | 2022-04-18 13:00 | 100.0 | A+ |
| 1 | 미적분학1 | 전공필수 | 3 | 2022-1 | 중간고사 | 2022-04-18 16:30 | 82.0 | B0 |
| 2 | 통계학입문 | 전공필수 | 3 | 2022-1 | 중간고사 | 2022-04-19 10:30 | 89.0 | B+ |
| 3 | 컴퓨팅사고와프로그래밍 | 전공필수 | 3 | 2022-1 | 중간고사 | 2022-04-19 15:00 | 90.0 | B+ |
| 4 | 대학글쓰기 | 교양 | 2 | 2022-1 | 중간고사 | 2022-04-19 15:00 | 76.0 | C+ |
환경과 데이터가 준비됐으면 1편부터 시작해봅시다.