데이터 공부/Python 12

파이썬 클린코드 3 - 좋은 코드의 일반적인 특징 (1/2)

요즘 파이썬 클린코드(마리아노 아나야 지음)라는 책을 읽고 있다. 한 챕터씩, 책을 읽으며 내가 기억에 남는 점 등에 대한 정리를 해보도록 하겠다. 목차 1. 계약에 의한 디자인 2. 방어적 프로그래밍 3. 관심사의 분리 좋은 코드의 특징 중 3가지를 이번 포스팅에서 정리를 해보고자 한다. 1. 계약에 의한 디자인 계약이란, 소프트웨어 컴포넌트 간 통신 중 지켜야 할 규칙들을 말한다. 여기서 계약에 의한 디자인이란, 계약을 기반으로 코드를 디자인해야 하는 것을 말한다. 이는 런타임 오류 발생 시 코드의 어떤 부분이 계약 파손 됐는지 명확히 알 수 있도록 돕는다. 이외 장단점을 정리하면 아래와 같다. 계약에 의한 디자인의 장점 사전조건 검증, 사후조건 검증에서 실패하는 오류 발생 시 오류를 쉽게 찾음 책임..

파이썬 클린 코드 (2) - 파이썬스러운 코드 (1/2)

요즘 파이썬 클린코드(마리아노 아나야 지음) 라는 책을 읽고 있다. 한 챕터씩, 책을 읽으며 내가 이해한 대로 요약 및 정리를 해보도록 하겠다. 목차 1. '파이썬' 스러운 코드란? 2. 파이썬스러운 코드 1 - 인덱스와 슬라이스 2-1. 슬라이스(slice)의 동작 원리 2-2. 자체 시퀀스를 생성하는 방법 3. 파이썬스러운 코드 2 - 컨텍스트 관리자 3-1. 파이썬 스러운 방법으로 컨텍스트 관리자 구현 방법 (1) with 3-2. 파이썬 스러운 방법으로 컨텍스트 관리자 구현 방법 (2) __enter__, __exit__ 매직 메소드 구현 3-3. 파이썬 스러운 방법으로 컨텍스트 관리자 구현 방법 (3) decorator 활용 1.' 파이썬'스러운 코드란? 모든 언어는 해당 언어로 작업을 처리하는..

파이썬 클린코드 (1) - 코드 포매팅과 도구

요즘 파이썬 클린코드(마리아노 아나야 지음) 라는 책을 읽고 있다. 한 챕터씩, 책을 읽으며 내가 이해한 대로 요약 및 정리를 해보도록 하겠다. 목차 1. 클린코드란? 1-1. 클린코드의 중요성 1-2. 클린코드를 위한 코드 포맷팅 2. 클린 코드를 위한 방법 - 문서화 2-1. Docstring 2-2. Annotation 3. Annotation은 Docstring을 대체하는 것일까? 4. 클린 코드를 위한 방법 - 도구 설정 5. 1장 요약 1. 클린코드란? 코딩 표준, 포맷팅, 린팅 도구나 다른 검사 도구를 사용한 코드 레이아웃 설정과 같은 것 그 이상을 의미한다. 즉, 품질 좋은 소프트웨어를 개발하기 위해 견고하고 유지보수가 쉬운 시스템을 만들기 위한 요소다. 1-1. 클린코드의 중요성 소프트웨..

Python 클린 코드(Clean Code) 작성 방법 정리 및 고찰 (1)

더 나은 파이썬 코드를 작성하기 위한 11가지 팁과 요령이라는 유튜브를 시청했다. 시청한 내용에 대해서 정리를 해보고자 한다. 1. range(len(x)) 를 enumerate 로 변경하자. 만약 idx와 item 으로 모두 추적할 경우, enumerate 를 사용하는 것이 간결하고 좋다. range를 쓰면 len 함수를 추가로 불러와야 하고, 각 원소의 자료구조의 인덱스로 직접 접근해야 한다. 하지만 enumerate는 인덱스와 item을 하나의 튜플 단위로 묶어 출력하기 때문에, 훨씬 pythonic 하다. 변경 전 코드 data = [1,2,3,4] for i in range(len(data)): if data[i]

스트리밍 데이터 기반 AI 모델 처리에 대한 고민 (1) 람다 아키텍처 활용

공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. 데이터의 변경사항이 있을 때마다, 머신러닝 알고리즘을 돌리면 어떻게 될까? 매우 비효율적일 것이다. 그렇다고 1일 1회 정기 배치 업데이트를 하자니, 데이터의 변경 사항이 반영되지 않은 머신러닝 알고리즘을 쓸 수없는 환경일 수 있다. 이를 해결하기 위한 방법으로, 람다 아키텍처를 활용해보면 어떨까 하는 생각이 들었다. 요즘 개발하고 있는 머신러닝 모델은, 텍스트 벡터라이즈와 시밀러리티 연산이 필요하다. 따라서 만약 기존에 training 되지 않은 스트림 데이터가 카프카 컨슈머(Kafka Consumer)를 통해 인입되면, 머신러닝 알고리즘을 다시 돌려서 벡터라이즈하..

Python Error - most likely due to a circular import 해결

aiokafka consumer 를 개발하는 과정에서 most likely due to a circular import 에러를 접했다. 원인은 되게 허무+간단했다. 해당 에러는 모듈 import 시 작업 폴더 내 모듈과 동일한 파일명이 존재하기 때문에 발생한다. 내가 실행하고자 했던 파일명이 aiokafka.py 였고, 그 안에 import aiokafka 명령이 실행되고 있었기 때문에, 이름이 충돌하여 발생한 이슈다. 따라서, aiokafka.py 파일 명을 다른 이름으로(나의 경우 aiokafka_consumer.py로 변경하였다.) 변경하면 문제없이 실행되는 것을 확인할 수 있다.

Pandas - 고객 구매 데이터 데이터 전처리 연습

목차 데이터셋 설명 분석 코드 01. 데이터셋 설명 데이터는 캐글에서 제공하는 고객 구매 데이터를 사용했다. 링크는 아래와 같다. https://www.kaggle.com/vjchoudhary7/customer-segmentation-tutorial-in-python Mall Customer Segmentation Data Market Basket Analysis www.kaggle.com 해당 데이터의 경우, 고객이 특정 몰에서 구매한 데이터 200 raw로 구성돼 있다. 각 칼럼값은 총 4개이며, 컬럼은 아래와 같다. CustomerID (고객ID) Age (나이) Annual Income (k$) (연간 수입) Spending Score (1-100) (지출 지수) 02. 분석 코드 2-1. dat..

05. 데이터 시각화

파이썬에서 데이터를 시각화하는 방법은 여러 방법이 존재한다. 우선, 라이브러리도 seaborn 이나 matplotlib 와 같은 대표적 시각화 툴이 있고, 아니면 shap이나 pdp와 같이, 모델링 이후 시각화를 할 때 사용하는 라이브러리 등이 존재한다. 오늘은 다양한 라이브러리들 중, 가장 범용적으로 사용하는 seaborn과 matplotlib 정리를 해 보았다. 히트맵, box플롯, scatter플롯, FacetGrid 차트 등 자주 사용하는 차트들을 살펴 보겠다. 막대 그래프 등은 너무 단순해서 이번 포스팅에서는 취급하지 않았지만, 추후 모델링 시 포스팅 할 예정이다. 또한 pdp나 shap 과 같은 시각화 라이브러리는, 자주 사용하지는 않으므로 이번 포스팅에서 다루지 않는다. 그러나 이후 모델 분..

04. String Manipulation

String Manipulation이란, 문자열 데이터 형태 및 타입 등을 변환하는 것 오늘은 파이썬을 활용해 String Manipulation을 수행해 볼 것이다. 이는 데이터 분석 수행에서 필수적으로 행하는 것 중 하나다. String 데이터를 처리할 때는, 웬만해선 데이터 통일화 작업이 요해지기 때문이다. 그 중에서도 SM에 가장 많이 쓰이는 함수(Replace, Apply, Split)를 이용해 문자열 데이터의 형태 & 타입을 변환하는 예시를 학습/정리할 예정이다. 목차 특정 데이터타입의 컬럼값만 추출하여, 데이터 형태 및 타입 변경 describe를 통한 summary statistics In [ ]: # 필요한 라이브러리를 import 합니다. import pandas as pd import..

03. 데이터 셋 병합 (Concat, Merge)

안녕하세요 한소희입니다. 공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. 감사합니다. 데이터 분석을 할 때면, 데이터 셋을 병합해야 하는 일이 종종 생긴다. 왜냐하면 대부분의 데이터셋은 예쁘게 한 개의 세트 형태로 제공되지 않기 때문이다. 물론, 캐글이나 데이콘 같은 곳에서 제공하는 데이터는 예쁘게 잘 정제되어 있지만, 실제 현업에서 마주하는 데이터는 그렇지 않다. (어쩌다 알게 되었냐고요? 저도 알고 싶지 않았습니다.. 따흑. 데이터 처리 스킬이 부족한 시절, 실습생 때 데이터 셋을 병합할 때 꽤나 골머리를 앓았던 것으로 기억한다. 데이터의 무결성 이슈 때문에..) 여튼, pandas에서는 이 데이터들을 병합하는..