요약/나만의 인사이트
- 파이썬 구조
- 파일 → 모듈 → 패키지 → 라이브러리
- 파일 : py
- 모듈 : 특정 주제에 대한 정의들 e.g. 수학 모듈 과학모듈
- 패키지 : 모듈들이 합쳐진 것 e.g. 이과 패키지 문과 패키지
- 라이브러리 : 패키지가 합쳐진 것 e.g. 고등학생 라이브러리
- 파일 → 모듈 → 패키지 → 라이브러리
- from utils.file_utils import read_file 형식으로 가져옴
- 파이썬 문제 해석의 흐름
- 1️⃣문제가 요구하는 게 뭐야 (목표)
- 2️⃣우리의 데이터는 어떤지? (확인)
- 3️⃣ 어떤 로직, 함수가 필요할까? (처리)
새롭게 알게 된 것
- 파이썬 체계
파일 .py 확장자를 가진 Python 스크립트 파일 폴더(디렉토리) 여러 파일을 모아놓은 구조 (모듈/패키지의 기본 단위) 모듈(Module) 변수, 함수, 클래스 등을 담은 .py 파일 패키지(Package) __init__.py가 포함된 폴더. 여러 모듈을 묶은 단위 라이브러리(Library) 여러 모듈/패키지를 모아 제공하는 외부 기능 모음집 프레임워크(Framework) 특정 목적의 일련의 라이브러리 구조 (예: Django, Flask 등) - 파이썬 표준 라이브러리
collections
파이썬 표준 라이브러리에 표함된 모듈로, 리스트 딕셔너리 등 기본 자료구조를 확장한 고급 자료 도구를 제공한다.
-
- Counter
- 반복가능한 객체 등장 횟수 세기
- 결과는 딕셔너리 형태로 반환
- most_common(n) 메서드를 사용하면 가장 자주 등장한 n개 요소를 추출할 수 있다.
from collections import Counter words = ['apple', 'banana', 'apple', 'kiwi', 'banana', 'apple'] counter = Counter(words) print(counter) # Counter({'apple': 3, 'banana': 2, 'kiwi': 1}) print(counter.most_common(2)) # [('apple', 3), ('banana', 2)]- defaultdict - 기본값이 있는 딕셔너리
- 기본 dict은 없는 key에 접근하면 에러가 남
- 하지만 defauldict는 자동으로 기본값 생성해줌
- 주로 list, int, set 등 기본 타입과 함께 사용
- 반복적으로 값을 추가하는 데이터 가공에서 매우 유용
- 데이터 그룹화에서 매우 유용
from collections import defaultdict #기본값이 자동으로 설정되는 딕셔너리 data = [('apple', 1), ('banana', 2), ('apple', 3)] d = defaultdict(list) # 기본값이 빈 리스트 []인 딕셔너리 # 즉 d['apple'] 접근하면 []이 만들어짐 for key, value in data: d[key].append(value) #d[key]인 리스트에 값을 하나씩 추가 print(d) #defaultdict(<class 'list'>, {'apple': [1, 3], 'banana': [2]})
- Counter
- 태블로
- 태블로 제품군은 3가지가 있다.
- prep : 데이터 전처리(결합/정리/변형)
- desktop : 데이터 시각화, 분석
- server & cloud : 협업, 거버넌스
- 태블로는 데이터를 그룹화/필터링하는 기준이 되는 값 (차원) , 데이터를 집계(평균, 최대, 최소)할 수 있는 수치형 값(측정값) 으로 나눠진다.
- 태블로의 공유 방법
- 공유장소에 따른 분류
- 서버에 게시
- 파일로 공유
- 공유대상에 따른 분류
- 태블로 사용하는 사람용
- 태블로 사용하지 않는 사람용
- 공유장소에 따른 분류
- 태블로 제품군은 3가지가 있다.
특히 어려웠던 것
쇼핑 장바구니 프로그램 만들기
- 목표 : 사용자의 입력을 받아 장바구니에 상품을 담고 총액을 계산
- 사용요소 : defaultdict , input(), 예외처리, dict, for
요구사항 - 제품명, 가격을 입력받아 장바구니에 추가 - 수량 누적 및 총액 계산 - 종료 시 장바구니 전체 내용과 총 결제 금액 출력 - 문제 로직
- 사용자에게 상품명과 가격을 입력받는다.
- 같은 상품은 수량을 누적한다.
- 총 결제 금액은 계산한다.
- 입력 형식이 올바르지 않으면 예외 처리한다.
from collections import defaultdict # 표준 라이브러이의 collection 모듈에서 defaultdict(기본값이 있는 딕셔너리, 값이 없어도 접근 가능) cart = defaultdict(int) #기본값이 int인 딕셔너리 / 상품별 개수를 저장 prices = {} #상품별 가격정보를 저장 print("장바구니에 상품을 담아주세요. (예: 사과, 1000)") print("끝내려면 '끝' 입력") while True: user = input("상품명, 가격: ") #사용자입력 if user == "끝": break try: #사용자 입력이니까 , 안쓰면 예외처리 name, price = user.split(',') price = int(price) cart[name] += 1 #수량 누적 key값이 없어도 바로 생성 prices[name] = price #가격정보 바로 딕셔너리 형태로 저장 except: print("입력 형식을 다시 확인해주세요. 꼭 ,를 써주세요.") # 결과 출력 total = 0 print("\\n장바구니 목록") for name in cart: subtotal = cart[name] * prices[name] print(f"{name} : {cart[name]}개 x {prices[name]} = {subtotal}원") total += subtotal print(f"총 금액: {total}원")
다음에 적용해 볼 것
- 간단한 성적분석 시스템 안보고 스스로 한번 만들어보기 !
'기타 > Python' 카테고리의 다른 글
| 헷갈리는 개념: dict, JSON, XML (0) | 2026.02.19 |
|---|---|
| 250728_파이썬(무슨요일인지 맞추기), 태블로 기초 (1) | 2025.07.28 |
| 250715_파이썬(enumerate 코드타카 풀이) (0) | 2025.07.15 |
| 250711_파이썬(순열과 조합), 데이터분석의 흐름 (1) | 2025.07.11 |
| 250710_파이썬(표준라이브러리), 머신러닝(선형회귀, 랜덤포레스트 복습) (2) | 2025.07.10 |