greatsangho의 이야기

캠프 7일차 - 파이썬 총정리 본문

프로그래밍/SK AI 캠프

캠프 7일차 - 파이썬 총정리

greatsangho 2024. 8. 30. 19:35

7일차는 판다스와 넘파이의 기본 사용법과 library에서 책을 입력받고 이를 클래스로 정리하여 CRUD를 할 수 있는 하나의 프로그램을 만들어 보았다. 지금까지 배운 파이썬 문법을 전부 사용하는 경험을 할 수 있었는데 기초적인 개념에 대한 이해와 숙달이 중요하다는 생각이 들었다.

 

pandas는 csv 및 기타 파일을 객체형태로 관리 모듈(프레임 웍)이다

# !pip install pandas -> colab에서, 이미 설치되어 있어 실행 불필요
# !conda install pandas -> 로컬 가상환경 이용시

설치를 하면 import를 해준다

import pandas as pd
pd.DataFrame() # 빈 데이터 프레임 클래스 초기화
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(d)
df # 딕셔너리는 세로로

판다스에서 딕셔너리는 세로로 표시해 준다는 것을 알 수 있다

import random
data = [random.sample(range(1,46),6) for i in range(20)]
df = pd.DataFrame(data)
df # 리스트는 가로로

리스트는 가로로 표기해 준다

 

판다스는 데이터를 편하게 관리 및 분석할 수 있는 함수를 제공한다

df['name0'] # 시리즈, DataFrame --> 시리즈의 집합
df['name0'].values # 넘파이 배열
df['name0'].index # 인덱스
df['name0'].dtype # 데이터 타입
df['name0'].value_counts() # 빈도수 # 기본이 내림차순으로 출력
df['name0'].unique() # 고유값
df['name0'].nunique() # 고유값 개수

판다스를 이용해 다음과 같이 데이터를 가져올 수 있다.

# https://www.data.go.kr/
df = pd.read_csv('/content/drive/MyDrive/datafile/<파일명>.csv',encoding='ms949')
# 주로 utf8로 표준화 안 해놓음
df.head(2)

다음은 공공데이터포털에서 csv를 가져온 예시이다.

우리나라 데이터는 표준 인코딩이 되어있지 않으므로 ms949로 인코딩 한다

 

넘파이 - 수학적 계산을 위한 리스트로 파이썬 리스트와 구분을 위해 넘파이 배열로 저장한다

import numpy as np
np.array([1,2,3]) # 리스트 -> 넘파이 배열
# 두개의 리스트의 각각의 요소끼리 사칙연산
a = random.sample(range(1,10),5)
b = random.sample(range(1,10),5)
print(a,b)
print([x+y for x,y in zip(a,b)])
print([x-y for x,y in zip(a,b)])
print([x*y for x,y in zip(a,b)])
print([x/y for x,y in zip(a,b)])
a+b

파이썬 리스트에서는 이와 같이 계산을 해야하지만

a_numpy = np.array(a)
b_numpy = np.array(b)
print(a_numpy+b_numpy)
print(a_numpy-b_numpy)
print(a_numpy*b_numpy)
a_numpy/b_numpy

넘파이는 다음과 같이 바로 계산할 수 있어 편리하다.

 

파이썬 클래스 실습으로 도서관리 프로그램을 만들었다.

기능 명세서와, 프로그램 설계서가 주어지고, 이를 바탕으로 프로그램을 만들었다.

 

프로그램을 만들면서 깨달은 점은 구현하고자 하는 것이 명확해야 하며 이를 글로 잘 적어 설계할 수 있어야 한다는 점이었다.

그 다음 배운 내용을 바탕으로 사용할 기능에 대한 정확한 함수나 클래스를 설정하고 적용할 줄 알아야 한다는 점이었다.

 

특히 일을 하게되면 초반에는 코딩을 많이 하지만 나중에는 설계를 많이 하게 될 것이라 강사님께서 말해주시는데 둘 다 잘할 수 있도록 열심히 공부하도록 해야겠다

 

https://github.com/greatsangho/python_study/blob/main/20240828_day_7.ipynb

 

python_study/20240828_day_7.ipynb at main · greatsangho/python_study

Contribute to greatsangho/python_study development by creating an account on GitHub.

github.com

반응형