Python 308

[Python] NumPy - 배열의 생성과 변형 1

개요 2022.11.11 - [Python] NumPy - 배열 1 2022.11.12 - [Python] NumPy - 배열 2 (인덱싱과 슬라이싱) 에 이어 NumPy에 대해서 계속 정리한다. 자료형 NumPy의 배열(ndarray 클래스 객체) 내 원소는 모두 같은 자료형이어야 한다. array 함수로 배열 생성 시 dtype 인수를 사용하여 자료형을 명시적으로 지정할 수 있다. 전달한 매개변수가 없으면 타입을 추론하게 된다. 자료형을 지정할 때는 아래와 같은 dtype 접두사 + 바이트/글자 수를 전달하여 지정한다. 숫자는 생략할 수 있고, 생략 시에는 OS에 따라 적절한 크기로 지정된다. dtype 접두사 설명 사용 예 b 불리언 b (참 혹은 거짓) i 정수 i8 (64비트) u 부호 없는 정..

[Python] NumPy - 배열 2 (인덱싱과 슬라이싱)

개요 2022.11.11 - [Python] NumPy - 배열 1에 이어 이번 글에서는 배열의 인덱싱과 슬라이싱에 대해 정리한다. 인덱싱 1차원 배열의 인덱싱은 리스트의 인덱싱과 동일하다. a = np.array(range(0, 9)) a[2] 실행 결과 2 다차원 배열인 경우에는 쉼표를 이용하여 접근할 수 있다. 쉼표로 구분된 차원은 축(axis)이라고 한다. b= np.array([[10, 20, 30, 40], [50, 60, 70, 80]]) b # 2행 3열 b[1, 2] 실행 결과 array([[10, 20, 30, 40], [50, 60, 70, 80]]) 70 슬라이싱 다차원 배열을 슬라이싱할 때는 쉼표와 일반적인 Python 슬라이싱을 함께 사용한다. b = np.array([[10, ..

[Python] NumPy - 배열 1

NumPy 수치해석, 선형 대수(linear algebra) 계산 기능을 제공하는 Python 패키지로, 자료형이 고정된 다차원 배열 클래스인 ndarray 클래스와 벡터화 연산(vectorized operation)을 지원한다. CPython에서만 동작한다는 특징을 가지며, 넘파이라고 읽는다. 직접 데이터 분석을 할 일은 없는데, 관련 소스를 볼 일이 생기는 것 같아 NumPy와 Pandas 개념을 정리해두려고 한다. 이 글은 기본적인 배열 생성에 대해서 정리한다. 배열 (array) 많은 숫자 데이터를 하나의 변수에 저장하여 관리할 때 속도가 느리고 메모리를 많이 차지하는 리스트보다 배열을 사용하는 것이 적은 메모리로 많은 데이터를 빠르게 처리할 수 있다. 배열을 리스트와 비슷하지만 다음과 같은 점에..

[boto3] 예외 처리

개요 Python으로 boto3을 사용할 때 발생하는 예외를 처리해 로그 또는 메시지를 남기거나 예외를 무시해야 하는 경우가 있다. 이 글에서는 boto3을 사용할 때 발생하는 예외를 처리하는 방법을 정리해둔다. 예외 종류 boto3를 사용할 때는 botocore 또는 AWS Service에서 예외가 발생할 수 있다. Botocore Exception Boto3가 의존하는 botocore 패키지 내에 정적으로 정의되는 예외이다. 클라이언트 측의 동작, 구성, 유효성 검사와 관련된 예외가 정의되어 있다. 정의된 예외는 https://github.com/boto/botocore/blob/develop/botocore/exceptions.py 에서 확인할 수 있다. AWS Service Exception bo..

Python 2022.11.10

[Python] PyMySQL/Pandas를 이용해 SELECT 하기

개요 2022.11.05 - [Python] PyMySQL - MySQL SELECT 하기에서 PyMySQL 라이브러리를 사용해 Python으로 MySQL을 다뤄보았다. PyMySQL만을 사용하면 매번 커서를 생성하는 등의 작업이 필요한데 Pandas를 사용하면 조금 더 편하게 MySQL을 다룰 수 있다. 이 글에서는 PyMySQL와 Pandas를 사용해 SELECT문을 실행하는 방법을 정리한다. MySQL 연결 PyMySQL을 이용하여 MySQL와 연결한다. import pymysql conn = pymysql.connect(host='DB_SERVER_IP', port='PORT' user='USERNAME', password='PASSWORD', db='DATABASE_NAME', charset='..

Python 2022.11.06

[Python] PyMySQL - MySQL SELECT 하기

PyMySQL Python을 이용해 MySQL을 다룰 때 사용할 수 있는 라이브러리 중 하나로, 순수하게 python으로 구현되어 있다. 💡 다른 라이브러리 - mysql-connector-python : Oracle에서 공식적으로 지원하는 라이브러리. mysql 8.0 이상의 버전에서 사용할 수 있다. - mysqlclient : PyMySQL을 개발한 측에서 개발한 라이브러리. C로 구현되어 있다. 이 글에서는 MySQL을 다룰 때 사용할 수 있는 라이브러리 중 대중적으로 사용되는 PyMySQL을 이용해 데이터를 SELECT 하는 방법을 정리한다. 설치 PyMySQL 라이브러리는 아래 명령어로 설치할 수 있다. pip install PyMySQL import 설치한 PyMySQL 라이브러리는 아래와 ..

Python 2022.11.05

[Python] 한 문서 내 여러 JSON 데이터 읽기

개요 2021.11.01 - [Python] JSON 데이터 다루기에서 정리했던 대로 다음과 같은 코드로 JSON 형식 데이터를 Python으로 읽고 다루려고 한다. import json file_path = 'test.json' with open(file_path, 'r') as f: json_obj = json.load(f) 근데 실행했더니 에러가 발생하면서 실패했다. json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 221) 읽을 JSON 파일을 확인해보니 각각의 줄은 유효한 JSON 데이터였으나, 전체적으로는 목록이나 객체 정의가 없어 유효한 JSON 형식의 데이터가 아니었다. {"votes": {"funny": 2, "useful"..

Python 2022.11.04

[boto3] S3 event 알림 설정 확인

개요 2022.10.11 - [aws cli] S3 event 알림 설정 확인에서 AWS CLI로 S3 이벤트 알림 설정 정보를 확인했다. 이번 글에서는 같은 일을 Python AWS SDK인 boto3을 이용해서 확인해보려고 한다. 필요한 권한은 모두 부여되어 있다고 가정한다. 자격 증명 확인 S3를 다루기 위한 자격 증명은 아래 함수로 얻을 수 있다. S3는 리전 구분을 하지 않으므로 region_name은 사용하지 않았다. def get_session(profile_name=None): session = boto3.Session(profile_name=profile_name) return session def get_client(aws_access_key_id=None, aws_secret_acce..

Python 2022.11.01

[Python] functools.partial - 함수 재활용

개요 2022.07.04 - [functools] reduce 함수에 이어 functools 모듈의 partial 함수에 대해 알아본다. partial partial 함수는 함수 이름과 그 인자 값을 전달받아 하나 이상의 인자가 채워진 함수를 생성하기 위해 사용한다. functools.partial(func, *args, **kwargs) 예시 아래와 같이 두 수의 곰셉을 계산하는 multiply 함수가 있다고 하자. def multiply(x, y): return x * y 만약 이 함수의 x가 5이고, 7이고 9인 함수를 정의해야 한다면 partial 함수를 이용해 아래와 같이 선언하여 사용할 수 있다. import functools def multiply(x, y): return x * y five..

Python 2022.10.31

[Python] 디렉터리 내 파일/디렉터리 리스트 확인 - 3

os.walk 매개변수로 전달한 디렉터리를 하향식 또는 상향식으로 탐색하며 존재하는 파일명의 리스트를 반환한다. 2022.10.16 - [Python] 디렉터리 내 파일/디렉터리 리스트 확인 - 1 [Python] 디렉터리 내 파일/디렉터리 리스트 확인 - 2 위 두 글에 이어서 os.walk 함수로 디렉터리 내 파일/디렉터리 리스트를 확인하는 방법을 정리한다. 사용법 os.walk 함수는 매개변수로 전달받은 경로부터 (dirpath, dirnames, filenames)로 이루어진 튜플의 리스트를 반환한다. dirnames와 filenames는 리스트형 데이터로 반복문으로 os.path.join 함수를 사용하면 보다 깔끔한 결과를 얻을 수 있다. 파일/디렉터리 import os base_path = '..

Python 2022.10.30