Day3. 파이썬 활용
추가적인 기능에 대하여 알아도록 합니다
예외 처리
코딩을 하다보면 생각하지 못한 여러가지 오류가 발생할 것입니다.
이런 상황에서 에러를 핸들링 하기 위해 파이썬에서 "try", "except문"을 사용 할 수 있습니다.
try, except 문
try:
...
except :
...
위 경우 에러 종류에 상관없이 에러가 발생하면 except 블록을 수행합니다.
try:
...
except 발생오류:
...
이 경우에는 정해 놓은 오류와 동일한 오류가 발생 했을 때만 except 블록을 수행하게 됩니다.
try:
4 / 0
except ZeroDivisionError as e:
print(e)
# division by zero
위 경우는 오류의 내용까지 알고 싶을때 쓰는 방법 입니다.
에러가 발생하면 "e" 라는 변수에 해당 에러의 종류가 저장되고 이것을 "print()"를 이용해서 출력할 수 있게 만들어 주는 것 입니다.
외부 라이브러리 작업(NumPy, Pandas)
Numpy?
📚 Numpy는 C언어로 구현된 파이썬 라이브러리로써, 고성능의 수치 계산을 위해 제작되었습니다. Numpy는 벡터 및 행렬 연산에 있어서 매우 편리한 기능을 제공합니다.
import numpy as np
# 1차원 배열
vec = np.array([1, 2, 3, 4, 5])
print(vec)
################
[1 2 3 4 5]
################
# 2차원 배열
mat = np.array([[10, 20, 30], [ 60, 70, 80]])
print(mat)
################
[[10 20 30]
[60 70 80]]
################
# 1씩 증가하는 1차원 배열(시작이 0부터)
print(np.arange(10))
################
[0 1 2 3 4 5 6 7 8 9]
################
# 1씩 증가하는 1차원 배열(시작이 5부터)
print(np.arange(5, 10))
################
[5 6 7 8 9]
################
# 영행렬 생성
print(np.zeros((2,2)))
################
[[0. 0.]
[0. 0.]]
################
# 유닛행렬
print(np.ones((2,3)))
################
[[1. 1. 1.]
[1. 1. 1.]]
################
# 모든 원소가 5인 2*3행렬
print(np.full((2,3), 5))
################
[[5 5 5]
[5 5 5]]
################
# 단위행렬
print(np.eye(3))
################
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
################
Pandas?
📚 데이터 처리와 분석을 위한 파이썬 라이브러리로, 대용량의 데이터들을 처리하는데 매우 편리한 특징을 가지고 있습니다
행과 열로 이루어진 데이터 객체를 만들어 다룰 수 있습니다.
Pandas는 총 세가지 데이터 구조를 사용됩니다.
Series
DataFrame
Panel
이 중에서 가장 많이 사용되는 데이터 프레임을 보겠습니다.
DataFrame
데이터 프레임은 2차원 리스트를 매개변수로 전달합니다. 2차원이므로 행방향 인덱스(index)와 열방향 인덱스(column)가 존재합니다. 즉 행과 열을 가지는 자료구조입니다.
values = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
index = ['one', 'two', 'three']
columns = ['A', 'B', 'C']
df = pd.DataFrame(values, index=index, columns=columns)
print('데이터프레임 출력 :')
print(df)
데이터프레임 출력 :
A B C
one 1 2 3
two 4 5 6
three 7 8 9
외부 데이터를 가지고 데이터 프레임 생성하고 조회하기
"example.csv"의 모습 예시
df = pd.read_csv('example.csv')
print(df)
######################################
student id name score
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Doyeon 98.43
3 1003 Jane 64.19
4 1004 Pilwoong 81.30
5 1005 Tony 99.14
# 위의 경우 인덱스가 자동으로 부여 됩니다.
print(df.index)
RangeIndex(start=0,stop=6,step=1)
### 데이터 프레임 조회 하기 ###
#앞 부분 2개까지 보기
print(df.head(2))
#########################
student id name score
0 1000 Steve 90.72
1 1001 James 78.09
#########################
# 뒷 부분 4개 까지 보기
print(df.tail(4))
#########################
student id name score
2 1002 Doyeon 98.43
3 1003 Jane 64.19
4 1004 Pilwoong 81.30
5 1005 Tony 99.14
#########################
# 'name'에 해당하는 열을 보기
print(df['name'])
#########################
0 Steve
1 James
2 Doyeon
3 Jane
4 Pilwoong
5 Tony
Name: name, dtype: object
#########################
Flask를 사용한 웹 개발 소개
💡 Flask는 웹사이트의 백엔드 개발을 위해 사용돼요 Flask의 가볍고 , 빠른 속도, 편리한 사용성 때문에 소셜미디어, 온라인 마켓플레이스, 교육 기관에 이르기까지 다양하게 사용 되고 있습니다.
Flask로 구축된 웹사이트

Flask를 사용하고 있는 대기업

Python 개발 모범 사례(PEP 8)
💡 PEP 8은 "Style Guide for Python Code"로 파이썬 코드를 어떻게 구상해야할 지 알려주는 스타일 가이드입니다.
네이밍 스타일 [ 중요!!!! ]
Function
소문자 단어를 사용하십시오. 가독성을 높이기 위해 단어를 밑줄로 구분합니다. snake case 라고 합니다.
function, my_function
Variable
소문자 단일 문자, 단어 또는 단어를 사용하세요! 가독성을 높이기 위해 단어를 밑줄로 구분합니다.
x, var, my_variable
Class
각 단어는 대문자로 시작합니다. 밑줄로 단어를 구분하지 마십시오. pascal case 또는 camel case라고 합니다 .
Model, MyClass
Method
소문자 단어를 사용합니다. 가독성을 높이기 위해 단어를 밑줄로 구분합니다.
class_method, method
Constant
대문자 단일 문자, 단어 또는 단어를 사용합니다. 가독성을 높이기 위해 단어를 밑줄로 구분합니다.
CONSTANT, MY_CONSTANT, MY_LONG_CONSTANT
Package
짧은 소문자 단어를 사용합니다 밑줄로 단어를 구분하지 마십시오.
package, mypackage
PEP 8에 대한 내용은 많기 때문에 이 문서를 참고해서 사용 하시는게 좋습니다.
PEP 8 - Style Guide for Python Code
Black 을 사용하여 코드 스타일 통일하기
📚 Black은 PEP 8을 준수하는 독창적인 포맷터입니다.
Last updated