[내일배움캠프] 42일

노경민·2025년 7월 15일
0

🧩 출석 현황 자동 분석기

📌 목표

학생별 출석률을 계산하고 평균 출석률 및 결석자를 파악한다.

🔍 핵심 개념

  • collections.Counter로 출석 횟수를 집계한다.
  • statistics.mean으로 평균 출석률을 계산한다.
  • set과 딕셔너리 내포를 통해 결석자를 도출한다.

✅ 주요 코드 흐름

names = []
for name in attendance.values():
    names.extend(name)
count = Counter(names)

for name in count:
    print(f"{name}: {round(count[name]/total_days*100, 1)}% 출석률")

rates = [v/total_days*100 for v in count.values()]
print("평균 출석률:", round(statistics.mean(rates), 1), "%")

💡 인사이트

  • Counter와 리스트 평탄화를 활용해 빠르게 통계를 계산할 수 있다.
  • set을 사용해 전체 학생 명단을 확보하고 결석 횟수를 쉽게 구할 수 있다.

🧺 쇼핑 장바구니 프로그램

📌 목표

사용자 입력을 받아 장바구니를 구성하고 총액을 계산한다.

🔍 핵심 개념

  • defaultdict(int)로 수량을 누적한다.
  • 가격은 별도의 dict에 저장한다.
  • 입력 오류를 처리하고 합계를 계산한다.

✅ 주요 코드 흐름

cart[name] += 1
prices[name] = price

for name in cart:
    subtotal = cart[name] * prices[name]
    total += subtotal

💡 인사이트

  • 동일한 상품명을 여러 번 입력해도 수량이 누적된다.
  • 가격은 마지막에 입력된 값으로 덮어쓰기 때문에, 고정 가격이 필요한 경우 예외 처리가 필요하다.

💠 간단한 성적 분석 시스템

📌 목표

학생 클래스를 정의한 후 평균 점수를 계산하고 우수자를 필터링하며 순위를 정리한다.

🔍 핵심 개념

  • 클래스를 설계하고 @property를 활용한다.
  • filterlambda로 조건 필터링을 수행한다.
  • sorted로 평균 점수를 기준으로 정렬한다.

✅ 주요 코드 흐름

class Student:
    def __init__(self, name, scores):
        self.name = name
        self.scores = scores

    @property
    def average(self):
        return sum(self.scores) / len(self.scores)

sorted_students = sorted(students, key=lambda s: s.average, reverse=True)

💡 인사이트

  • 객체지향을 활용하면 데이터 구조를 깔끔하게 처리할 수 있다.
  • @property를 활용하면 함수처럼 보이지만 속성처럼 사용할 수 있어 코드 표현이 간결해진다.

🦎 Groupby 및 Pivot Table 활용한 집계 분석

📌 목표

성별(Gender) 기준으로 Review Rating의 평균과 중앙값을 계산한다.

🔍 핵심 개념

  • groupby + agg()로 다중 집계를 수행한다.
  • pivot_table을 사용해 행/열 기준으로 요약한다.
  • reset_index()로 멀티 인덱스를 컬럼화한다.

✅ 함수 예시

def get_agg(df):
    agg_df = df.groupby('Gender')['Review Rating'].agg(['mean', 'median'])
    return agg_df.round(2)

💡 인사이트

  • 여러 집계를 동시에 적용할 때는 .agg() 안에 리스트로 함수를 전달한다.
  • pivot_table은 보고서나 시각화용 테이블 작성에 유용하다.

🦾 다중선형회귀 실습

📌 목표

나이(Age)와 과거 구매 수(Previous Purchases)가 구매 금액에 미치는 영향을 분석한다.

🔍 핵심 개념

  • LinearRegression 모델을 학습한다.
  • r2_score로 결정계수(R²)를 계산한다.
  • 수식을 통해 직접 R²를 계산할 수 있다.

✅ 함수 예시

def get_multi_reg(df):
    X = df[['Age', 'Previous Purchases']]
    y = df['Purchase Amount (USD)']
    model = LinearRegression()
    model.fit(X, y)
    y_pred = model.predict(X)
    r2 = r2_score(y, y_pred)
    return round(r2, 4)

💡 인사이트

  • 결정계수(R²)는 회귀 모델이 데이터를 얼마나 잘 설명하는지를 나타낸다.
  • r2_score() 외에도 직접 수식을 사용해 결정계수를 계산할 수 있다.

🤔 느낀 점

실전 예제를 통해 Python 내장 모듈과 데이터 분석 기초 기능을 익혔다.
groupby, pivot_table, @property, Counter, defaultdict 등 실무에서 자주 사용하는 기능을 반복적으로 학습하여 익숙해졌다.
단순 통계부터 회귀 분석까지 학습하면서 분석 흐름에 대한 감각을 익혔다.


🎯 내일 목표

코드카타 심화 프로젝트 올인


0개의 댓글