기타/Python

250725_파이썬(표준 라이브브러리), 태블로(기본개념)

baektree 2025. 7. 25. 21:14

요약/나만의 인사이트

  • 파이썬 구조
    • 파일 → 모듈 → 패키지 → 라이브러리
      • 파일 : 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)]
      
      
      1. 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]})
      
      
  • 태블로
    • 태블로 제품군은 3가지가 있다.
      • prep : 데이터 전처리(결합/정리/변형)
      • desktop : 데이터 시각화, 분석
      • server & cloud : 협업, 거버넌스
    • 태블로는 데이터를 그룹화/필터링하는 기준이 되는 값 (차원) , 데이터를 집계(평균, 최대, 최소)할 수 있는 수치형 값(측정값) 으로 나눠진다.
    • 태블로의 공유 방법
      • 공유장소에 따른 분류
        1. 서버에 게시
        2. 파일로 공유
      • 공유대상에 따른 분류
        1. 태블로 사용하는 사람용
        2. 태블로 사용하지 않는 사람용

특히 어려웠던 것

쇼핑 장바구니 프로그램 만들기

  1. 목표 : 사용자의 입력을 받아 장바구니에 상품을 담고 총액을 계산
  2. 사용요소 : defaultdict , input(), 예외처리, dict, for
    요구사항
    - 제품명, 가격을 입력받아 장바구니에 추가
    - 수량 누적 및 총액 계산
    - 종료 시 장바구니 전체 내용과 총 결제 금액 출력
    ​
  3. 문제 로직
    1. 사용자에게 상품명과 가격을 입력받는다.
    2. 같은 상품은 수량을 누적한다.
    3. 총 결제 금액은 계산한다.
    4. 입력 형식이 올바르지 않으면 예외 처리한다.
    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}원")
    

다음에 적용해 볼 것

  • 간단한 성적분석 시스템 안보고 스스로 한번 만들어보기 !