데이터 전처리 & 시각화 개인과제 문제 풀이(3)

라라·2025년 6월 12일
0

문제 1-4 : 전환율(conversion_rate) 계산 (종합)

  • 요구사항

1) conversion_rate라는 새로운 열을 만들고, 각 행에 대해 conversions / clicks를 계산하세요.

# 전환율 계산: 새로운 컬럼 conversion_rate 생성
df["conversion_rate"] = df["conversions"]/df["clicks"]
df["conversion_rate"]

2) clicks가 0인 경우에는 전환율을 0으로 설정하세요.

#이상치 처리: Clicks 값이 0인 경우 결측치(0)로 변경
df.loc[df['clicks'].isna()] #isna 값 = 0

3) campaign, clicks, conversions, conversion_rate 컬럼만 선택하여 앞부분 5개 행을 출력하세요.

#결과 일부 출력
print(df[["campaign", "clicks", "conversions", "conversion_rate"]].head())
print(df[["campaign", "clicks", "conversions", "conversion_rate"]].tail())

🔩 Level. 2 : 데이터 시각화

문제 2-1 : Bar Chart – 매체별 Impressions & Clicks

[문제 설명]

각 광고 매체(media)는 서로 다른 성과를 보입니다.

매체별로 impressions(노출 수)와 clicks(클릭 수)의 총합을 비교하여,

성과 차이를 시각적으로 비교할 수 있도록 막대 그래프를 작성하세요.

[요구사항]

  • 매체 별 그룹화

    • 주어진 데이터에서 매체(media) 를 기준으로 그룹화하세요.
      각 매체 별 노출 수(impressions)와 클릭 수(clicks)의 총합(합계)을 구하세요.
  • Bar Chart 작성

    • X축에는 매체 이름(media)을 표시합니다.
    • Y축에는 노출 수(impressions)와 클릭 수(clicks)의 합계를 나타냅니다.
    • 각 매체별로 두 가지 막대(impressions/clicks)를 나란히 배치하여 시각적인 비교가 가능하도록 합니다.
  • 그래프 꾸미기

    • 그래프의 제목(title)을 적절히 설정하세요.
    • X축 라벨(xlabel)과 Y축 라벨(ylabel)을 알맞게 설정합니다.
    • 범례(legend)를 추가하여 impressions와 clicks를 명확하게 구분하세요.
    • X축에 매체 이름이 정확히 표시되도록 하세요 (필요 시 plt.xticks 사용)
    • Y축에는 격자(grid)를 추가하여 막대의 높이를 쉽게 비교할 수 있도록 합니다.
# 라이브러리 불러오기
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df #쓸 데이터

#x축 준비
x = np.arange(len(media)) #df DataFrame의 'media' 열에 있는 데이터의 개수만큼 0부터 시작하는 정수 시퀀스를 생성하여 변수 x에 저장하는 코드

# 막대그래프 생성
width=0.35 #막대 그래프 너비 생성 보통적으로 #0.35 또는 0.4를 쓴다.

plt.bar(x - width/2, df['impressions'], width=width, label='Impressions', color='orange') #두개의 그래프가 겹쳐 보이지 않게 나누기
#너비를 설정하고 노출수의 x축을 너비/2 한 값 만큼 빼서 움직임, 색깔도 오랜지 색으로 바꿈 
plt.bar(x + width/2, df['clicks'], width=width, label='Clicks', color='orangered')
#너비를 설정하고 노출수의 x축을 너비/2 한 값 만큼 더해서 움직임, 색깔도 오랜지 색으로 바꿈 
plt.xticks(x, df['media']) #필요 시 plt.xticks 사용 / x축에 정수가 출력돼서 알아보니 이름을 지정해주는 xticks가 있어서 사용

# 빈칸을 작성하세요
plt.title('Total Impressions and Clicks by Media')
plt.xlabel('Media')
plt.ylabel('Total Count')
plt.xticks(rotation=0)
plt.legend(["Impressions", "Clicks"])
plt.grid(axis='x') #x축으로 그래프가 나뉘어져 있어서 axis를 x축으로 나눔

# 그래프 표시
plt.show()

[결과 값]

profile
공부를 위해 기록하는 공간

0개의 댓글