본문 바로가기

Python

(16)
[python] 날짜&시간 연산 (datetime, timedelta, strptime, strftime) datetimedatetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None) from datetime import datetimedt = datetime(2025, 10, 15, 21)print(dt) # 2025-10-15 21:00:00print(dt.microsecond) # 0* 밀리초(milliseconds)가 아닌 마이크로초(microseconds) 인자 필요. ( ex) 123ms = 123,000µs )* tzinfo 인자가 없다면(None)이라면 naive datetime, 아래처럼 타임존을 지정하면 aware datetimefrom datetime import datetim..
[python] pandas (Series, DataFrame) pandas파이썬에서 데이터 분석/처리를 위한 라이브러리로, 엑셀, DB 테이블과 같은 구조적 데이터를 다루기 최적화.* 기본구조 - Series (1차원) - DataFrame(2차원) Series (1차원 데이터)리스트나 배열을 pandas 형식으로 감싼 형태로, 인덱스(index)와 값(value)으로 구성import pandas as pd# 리스트 -> Series 변환data = [10, 20, 30, 40]s = pd.Series(data)print(s)(출력결과)0 101 202 303 40dtype: int64=> 기본 index 자동 지정.* 인덱스 지정s = pd.Series([10, 20, 30], index=["a", "b", "c"])print(s)(출력결과..
[Python] collections.Counter collections.Counter리스트나 문자열 같은 반복 가능한(iterable) 객체에서 각 요소가 몇 번 등장했는지 빈도수 반환.from collections import Counters = "banana"counter = Counter(s)print(counter) # Counter({'a': 3, 'n': 2, 'b': 1})print(counter['a']) # 3print(counter['z']) # 0 (없는 값은 0) * most_common()빈도수 내림차순으로 (원소, 개수) 튜플을 리스트로 반환.# 빈도수대로 나열print(counter.most_common()) # [('a', 3), ('n', 2), ('b', 1)]# 상위 n개 나열print(cou..
[Python] PYTHONPATH 설정, __init__.py 파일, 실행명령어 PYTHONPATH파이썬이 모듈을 찾기 위한 검색 경로(sys.path).아래처럼 특정 디렉토리를 추가하면 해당 디렉토리 내부 .py 파일 또는 패키지를 import로 불러올 수 있다.C:\> set PYTHONPATH=C:/proC:\> python>>> import executor # 실제로는 C:/pro/executor.py __init__.py해당 디렉토리를 파이썬 패키지로 취급해주는 설정 파일.아래처럼 각 디렉토리 하위에 __init__.py 빈 파일을 생성해주면uitls, service 디렉토리가 패키지로 묶인다. C:/pro/ utils/ __init__.py settings.py service/ __init__.py executor.py builder.py..
[Python] SQLAlchemy 업서트(upsert) - PostgreSQL * on_conflict_do_updatefrom sqlalchemy.dialects.postgresql import insertins = insert(user_table).values(id=1, name="Alice")stmt = ins.on_conflict_do_update( index_elements=['id'], # 충돌 기준 (unique 키/PK) set_={"name": "Alice Updated"} # 충돌 시 업데이트할 값)id를 기준으로 - 데이터가 없는 경우, 새로운 행 insert - 데이터가 있는 경우(충돌), 기존 행 name 컬럼 업데이트 * ins 는 SQLAlchemy Core의 (insert) 쿼리 객체* stmt 는 UPSERT를 수행할 수..
[Python] SQLAlchemy 라이브러리 SQLAlchemy Python에서 데이터베이스를 다루기 위한 ORM(Object Relational Mapping) 라이브러리.ORM 기능 : SQL문 작성 없이 Python 클래스/객체와 데이터베이스 테이블/레코드 매핑 가능.SQL 표현식 언어 : SQL을 Python 코드로 표현 가능.다양한 DB 지원 (MySQL, PostgreSQL, SQLite, Oracle 등) 1. Create_engineEngine 객체를 통해 DB와 연결. ( PostgreSQL )from sqlalchemy import create_engineengine = create_engine("postgresql+psycopg2://user:password@localhost:5432/mydb") 2. MetaData, Tab..
[Python] ast.literal_eval() AST(Abstract Syntax Tree, 추상 구문 트리)프로그래밍 언어에서 소스 코드를 구조적으로 표현한 트리 형태의 자료구조.파이썬은 표준 라이브러리로 ast 모듈을 제공. ast.dump() 함수AST 트리를 문자열로 출력 (디버깅용)ast.parse() 함수코드 문자열을 AST로 변환. import astcode = "x = 3 + 4"tree = ast.parse(code)print(ast.dump(tree, indent=4)) # 트리 구조 출력 (출력결과)Module( body=[ Assign( targets=[Name(id='x', ctx=Store())], value=BinOp( left=Cons..
[Python] top-level 코드 ( import시점 & runtime 시점 ) 파이썬에서 top-level 코드는 해당 모듈의 import 시점에, 단 한 번만 실행된다.* top-level 코드 : 함수/클래스 밖의 모듈. ( if 분기문, for 반복문, print 등 포함 ) (config.py)from datetime import datetimeprint(f"===import 시점 실행===")NOW = datetime.now() # top-level 코드print(f"[config.py] NOW(import): {NOW}")print(f"===import 시점 실행===")def get_current_time(): # top-level 코드 global NOW return NOW(main.py)from config import get_current_tim..