파이썬 활용

Suhyeon Lee·2024년 10월 18일
0

예외 처리(try, except)

  • 코딩을 하다보면 생각하지 못한 여러 가지 오류가 발생
  • 이런 상황에서 에러를 핸들링 하기 위해 파이썬에서 "try", "except문"을 사용

에러 종류에 상관없이 에러가 발생하면 except 블록 수행

try:
    ...
except :
    ...

정해놓은 오류와 동일한 오류가 발생했을 때 except 블록 수행

try:
    ...
except 발생오류:
    ...

오류의 내용까지 알고 싶을 때

  • 에러가 발생하면 "e" 라는 변수에 해당 에러의 종류가 저장되고 이것을 "print()"를 이용해서 출력
try:
    4 / 0
except ZeroDivisionError as e:
    print(e)

# division by zero

Quiz

  • 사용자로부터 숫자를 입력받아 100을 입력받은 숫자로 나누는 프로그램을 작성하려고 합니다. 하지만 사용자가 0을 입력하거나, 숫자가 아닌 값을 입력하면 예외가 발생합니다. 이 예외를 처리하고, 그 외의 경우에는 나눗셈 결과를 출력하는 코드를 작성하세요.
try:
    x = int(input("나눌 수를 입력하세요: "))
    y = 100 / x
except 영은안됨:
    # 0으로 나누려고 할 때 예외 처리
except 숫자가아님:
    # 숫자가 아닌 값을 입력했을 때 예외 처리
else:
    # 나눗셈 결과 출력

위의 코드에서 주석 처리된 부분과 except 옆의 한글 내용만 수정해보세요.

🡆

try:
    x = int(input("나눌 수를 입력하세요: "))
    y = 100 / x
except ZeroDivisionError as e:
    print(e)
except ValueError:
    print("숫자만 입력해주세요.")
else:
    print(y)

참고: 예외처리

외부 라이브러리 작업(NumPy, Pandas)

NumPy

  • C언어로 구현된 파이썬 라이브러리
  • 고성능의 수치 계산을 위해 제작됨
  • 벡터 및 행렬 연산에 있어서 매우 편리한 기능을 제공
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
#########################

QUIZ

  • 다음과 같은 numpy array가 주어졌을 때, 이를 pandas DataFrame으로 변환하고, 컬럼 이름을 'name', 'age', 'gender'로 지정하세요.
import numpy as np

arr = np.array([
    ['Kim', 35, 'M'],
    ['Ko', 28, 'F'],
    ['Choi', 29, 'F'],
    ['Lee', 36, 'F']
])

🡆

import pandas as pd
import numpy as np

arr = np.array([
    ['Kim', 35, 'M'],
    ['Ko', 28, 'F'],
    ['Choi', 29, 'F'],
    ['Lee', 36, 'F']
])

df = pd.DataFrame(arr, columns = ['name', 'age', 'gender'])
df

ANSWER

import pandas as pd
import numpy as np

arr = np.array([
    ['Kim', 35, 'M'],
    ['Ko', 28, 'F'],
    ['Choi', 29, 'F'],
    ['Lee', 36, 'F']
])

df = pd.DataFrame(arr, columns=['name', 'age', 'gender'])
print(df)

Flask를 이용한 웹 개발 소개

Flask

  • 웹사이트의 백엔드 개발을 위해 사용
  • 가볍고 , 빠른 속도, 편리한 사용성 때문에 소셜미디어, 온라인 마켓플레이스, 교육 기관에 이르기까지 다양하게 사용

Python 개발 모범 사례(PEP 8)

네이밍 스타일

  • type

    • Function
  • naming convention

    • 소문자 단어를 사용하십시오.
    • 가독성을 높이기 위해 단어를 밑줄로 구분합니다.
    • snake case 라고 합니다.
  • example

    • function, my_function
  • type

    • Variable
  • naming convention

    • 소문자 단일 문자, 단어 또는 단어를 사용하세요!
    • 가독성을 높이기 위해 단어를 밑줄로 구분합니다.
  • example

    • x, var, my_variable
  • type

    • Class
  • naming convention

    • 각 단어는 대문자로 시작합니다.
    • 밑줄로 단어를 구분하지 마십시오.
    • pascal case 또는 camel case라고 합니다.
  • example

    • Model, MyClass
  • type

    • Method
  • naming convention

    • 소문자 단어를 사용합니다.
    • 가독성을 높이기 위해 단어를 밑줄로 구분합니다.
  • example

    • class_method, method
  • type

    • Constant
  • naming convention

    • 대문자 단일 문자, 단어 또는 단어를 사용합니다.
    • 가독성을 높이기 위해 단어를 밑줄로 구분합니다.
  • example

    • CONSTANT, MY_CONSTANT, MY_LONG_CONSTANT
  • type

    • Module
  • naming convention

    • 짧은 소문자 단어를 사용합니다.
    • 가독성을 높이기 위해 단어를 밑줄로 구분합니다.
  • example

    • module.py, my_module.py
  • type

    • Package
  • naming convention

    • 짧은 소문자 단어를 사용합니다.
    • 밑줄로 단어를 구분하지 마십시오.
  • example

    • package, mypackage

Black 을 사용하여 코드 스타일 통일하기

  • Black은 PEP 8을 준수하는 독창적인 포맷터
profile
2 B R 0 2 B

0개의 댓글