[내일배움캠프] 데이터 트랙/본 캠프

[내일배움캠프] 32일 차 - 데이터 전처리&시각화 6, 아티클 스터디

554083460 2025. 6. 26. 21:05

 

 

 

 데이터 전처리 & 시각화 - 시각화 6

 

 

더보기

 

데이터 전처리 & 시각화 - 시각화 6

 

1. 데이터 시각화

 

Matplotlib.pyplot의 plot() 함수

  • plot() 메서드 호출
  • x, y인수에 x축, y축에 해당하는 열 지정
import pandas as pd
import matplotlib.pyplot as plt

# 샘플 데이터프레임 생성
data = {
    'A': [1, 2, 3, 4, 5],
    'B': [5, 4, 3, 2, 1]
}
df = pd.DataFrame(data)

# 선 그래프 그리기
df.plot(x='A', y='B')
plt.show()

 

스타일 설정하기

  • color, linestyle, marker 등
  •  Color(색상):
    • 문자열
    • 'blue', 'green', 'red', 'cyan', 'magenta', 'yellow', 'black', 'white' 등
  • Linestyle(선 스타일):
    • '-'(실선), '--'(대시선), ':'(점선), '-.'(점-대시선) 등
  • Marker(마커):
    • 데이터 포인트
    • 'o'(원), '^'(삼각형), 's'(사각형), '+'(플러스), 'x'(엑스) 등
  • Matplotlib 공식 문서
    ☑ Line / ☑ Marker / ☑ Line Styles
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o')

plt.show()

 

범례 추가하기

  • legend()
# 방법 1 label
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o', label='Data Series')

# 방법 2 legend
ax.legend(['Data Series'])

plt.show()

 

축, 제목 입력하기

  • set_xlabel(), set_ylabel(), set_title()
ax.set_xlabel('X-axis Label')
ax.set_ylabel('Y-axis Label')
ax.set_title('Title of the Plot')

plt.show()

 

텍스트 추가하기

  • text()
ax.text(3, 3, 'Some Text', fontsize=12)

plt.show()

 

한꺼번에 설정하기

  • plot() 함수에
    color, linestyle, marker, label 등 파라미터 사용
  • xlabel(), ylabel(), title(), text() 함수 사용해 각각 설정 추가
import matplotlib.pyplot as plt

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 그래프 그리기
plt.plot(x, y, color='red', linestyle='--', mark='o', label='Data Series')

# 추가 설정
plt.xlabel('X-axis Label')
plt.ylabel('Y-axis Label')
plt.title('Titile of the Plot')
plt.legend()
plt.text(3, 7, 'Some Text', fontsixe=10)

# 그래프 출력
plt.show()

 

그래프 크게 만들기

  • plt.figure() 함수 사용해 figure 객체 생성 → figsize 매개변수 사용해 원하는 크기 설정
  • figsize: 그래프 가로, 세로 크기를 인치 단위로 설정
import matplotlib.pyplot as plt

# Figure 객체 생성 및 사이즈 설정
plt.figure(figsize=(8, 6))

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 그래프 그리기
plt.plot(x, y)

# 그래프 출력
plt.show()

 

# 위의 방법으로 했을 때, 크기가 바뀌지 않으면 이 방법 쓰기

fig, ax = plt.subplots(figsize=(18, 6))  # fig: 전체 그림 영역 # ax: 그래프가 그려지는 공간
ax = df.plot(x='A', y='B', color='purple', linestyle='--', marker='o', ax=ax)
ax.legend(['Data Series'])
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_title('Title')
ax.text(3.1, 3, 'Some Text', fontsize=10)
ax.text(2, 2, 'Some Text 2', fontsize=15)
plt.show()

 

 

자료 출처

스파르타 코딩클럽 데이터 Docs

 

 

 

 

 아티클 스터디

 

 

[아티클]

A/B 테스트 제대로 이해하기: ① 테스트를 설계할 때 우리의 진짜 질문은?

☑ link

 


 

[요약]

 

서론

A/B 테스트를 통해 구체적으로 무엇을 알고자 하는가?

 

본론

A/B 테스트를 설계할 때 우리가 진짜로 궁금해하는 것

 

1) 우리는 암묵적으로 A/B 방안의 결과가 상당히 크길 바란다

  • A/B 테스트의 결과, 두 방안의 차이가 확실하게 크기를 바란다.

2) 우리는 실험의 진행이 공정하길 바란다

  • 실체 없는 공정함
  • 두 그룹의 표본 수가 다르고
    표본이 적은 A 그룹의 전환율 > 표본이 큰 B 그룹의 전환율
    이런 상황에서 단순히 전환율이 높다고 A 그룹이 더 낫다고 할 수 없다
    실험 배경이 5:5로 동일한지 확인하는 과정 필요하다
  • 우리는 확인 없이 실험 배경이 5:5로 동일하다고 믿어버리는 경향 있다

3) 우리는 이번 실험의 결과가 이례적이거나 우연이 아니길 바란다

  • 같은 조건, 같은 실험인데 이전 실험과 결과가 다르다면 실험을 신뢰하기 어렵다
  • 우리는 A/B 테스트의 결과가 우연에 의한 것이 아니기를 원한다

 

결론

A/B 테스트의 진짜 질문

  • 표면상의 질문: 목표 달성 위한 방안으로 A안과 B안 중 어느 것이 더 효과가 좋은가?
  • 진짜 질문
    • 며칠 동안의 데이터 속 고객에 대해서만 유효한 것이 아니고,
      앞으로도 해당 유형의 모든 고객에게 확실하게 효과 있는가?
    • 이 결과가 A안과 B안의 차이 때문에 생긴 것인가?
    • 이 결과가 우연이 아닌가?

 

 

[핵심 개념 및 용어 정리]

 

A/B 테스트의 정의

분할 테스트 또는 버킷 테스트라고도 하는 A/B 테스트는 두 가지 콘텐츠를 비교하여 방문자/뷰어가 더 높은 관심을 보이는 버전을 확인합니다. 주요 측정지표를 기반으로 가장 성공적인 버전을 측정하기 위해 변형(B) 버전과 비교하여 컨트롤(A) 버전을 검증합니다. B2B 마케팅 또는 B2C 마케팅을 수행하는 디지털 마케팅 실무자가 선택 가능한 A/B 테스트의 수행 옵션은 다음과 같습니다.

  • 웹 사이트 A/B 테스트
    • 텍스트, 이미지, 색상 설계, CTA(call to action)
    • A와 B 두 버전 사이의 트래픽 분리
    • 어느 버전에서 1) 전환한 숫자가 가장 높거나
                              2) 원하는 작업 수행한 방문자 숫자가 가장 많은가 파악
  • 이메일 마케팅 A/B 테스트
    • 이메일 제목, 이미지, CTA
    • 수신자를 두 세그먼트로 세분화
    • 더 높은 오픈율(open rate)을 보여준 그룹 결정

 

A/B 테스트의 수행 방법

A/B 테스트는 어렵지 않지만 마케터들은 잘 정의된 프로세스를 따라야 합니다. 9가지 기본 단계는 다음과 같습니다.

 

A/B 테스트를 계획하고 실행하는 기본 단계

  • 1. 성과 기준 측정 및 검토
  • 2. 성과 기준을 사용하여 테스트 목표 결정
  • 3. 테스트에서 성과를 개선할 수 있는 방법에 대한 가설을 개발
  • 4. 테스트 대상 또는 위치 식별
  • 5. 테스트할 A, B 버전 생성
  • 6. QA 도구를 활용하여 설정 검증
  • 7. 테스트 실행
  • 8. 웹 및 테스트 분석을 사용하여 결과 추적 및 평가
  • 9. 결론을 적용하여 고객 경험 개선

 

A/B 테스팅의 단점

글을 마치기 전에 단점에 대해 써보자. 세 가지 정도가 떠오른다.
첫째, 테스트를 많이/자주하면 단기적으로 손해가 발생할 수 있다. 예를 들어 쇼핑몰에서 구매전환율이 높은 상품 이미지가 무엇인지 알아보기 위한 테스팅을 진행한다고 치자. 2주 동안 전체 방문자를 50:50으로 나눠 기존 상품 이미지와 새로운 상품 이미지를 보여주고자 한다. 테스트를 3일 쯤 진행했더니 새로운 이미지를 본 집단에서의 매출이 기존에 비해 절반 밖에 나오지 않는다면 어떻게 해야하나? 애초에 계획했던 2주동안 테스트를 진행하려면 막심한 매출 손해를 감수해야한다.
둘째, A/B 테스팅의 결과는 계절 변화나 취향 변화 등 시간의 흐름에 따라 바뀔 수 있다. 작년 겨울에 A/B 테스팅을 하여 얻은 결론은 언제까지 유효할까? 통제실험은 시공간의 보편성에 대한 가정을 깔고 있다. 이 가정은 물리학이나 화학 수준에서는 대단히 확실히 보장되고, 생물학을 거쳐 사회과학 분야로 가면서 점점 약해지며, 비즈니스 맥락에서는 대단히 약해진다. 어제의 세상과 오늘의 세상이 다르고, 미국과 한국이 다르다. 결국 확실성을 유지하기 위해서는 실험을 지속적으로 반복해서 해야하는데 첫번째 단점(비용 문제)과 엮어서 생각해본다면 곤란한 얘기가 된다.
셋째, A/B 테스팅만 해서는 지역최적점에 머물게 될 위험이 있다. A/B 테스팅이라는 것은 기존 상태에서 작은 변화(되도록 하나의 변수만 살짝 바꾸기)를 가하며 점진적으로 더 나은 상태를 찾아가는 방식으로 진행된다. 하지만 이 방식으로는 지역최적점에 수렴할 수 있을 뿐 전역적인 최적점을 찾을 수 없다.
이 중 첫번째와 두번째 문제에 대해서는 Multi-armed Bandit 알고리즘이라고 불리는 효과적인 해결책이 있다. 세번째 단점에 대해서는 별도의 글이 필요할 것 같다.

 

참고자료 1

참고자료 2

 

 

[실무 적용 사례]

 

  • Etsy (핸드메이드, 빈티지, 공예용품 주력 이커머스 기업)
    웹페이지 search 버튼 배경색 설정

 

참고자료

더 많은 참고자료