2022. 7. 8. 10:50ㆍData Science/with Python(Numpy, Pandas …ect.)
데이터 분석을 위한 Domain Knowledge
1. 광고의 진행과정
광고주가 매체(네이버, 구글)에 광고비를
지불하고 매체는 광고를 플랫폼에 개제한다.
노출된 광고를 접한 소비자가 클릭을 하고
접속해서 광고주의 상품을 구매 한다.
물론 노출수=클릭수=구매수가 아닌
노출수>>클릭수>>구매수 라는 것도
인지하고 있어야한다.
2. 광고성과지표
CTR 노출 대비 클릭의 비율을 환산한
수치로 실무에서도 이 수치가 높으면
높을수록 좋다고 판단한다.
노출된 걸 보고 그만큼 클릭하여 홈페이지로
구경 온 소비자들이 많다는 뜻이니까
CPM 한번 노출당 얼마의 광고비가
나가는지, 1000이 곱해져 있으므로
1000번 노출 당 나가는 광고비용이
적혀지는 것이다. 이 지표는 낮으면
낮을수록 광고비를 효율적으로
사용했다고 판단한다.
CPC 이 지 표 역시 낮으면 낮을수록
우리 홈페이지에 많이 들어왔다,
많이 클릭했다고 판단한다.
CPA 구매당 단가. 이 지표가 낮으면
낮을수록 구매가 잘 된것으로 판단하고
광고비를 효과적으로 사용했다고
판단한다.
Matplotlib
파이썬에 있는 시각화 라이브러리로
머신러닝 과정 중 데이터 탐색에서
꼭 필요한 과정이라 숙지해 놓는 것이 좋다.
대량의 데이터를 한눈에 파악할 수
있도록 해주며 패턴 역시 보다
수월하게 파악할 수 있다.
아래는 네이버 광고 지표를 분석하기 위해
라이브러리를 호출하고 한글 폰트 문제를
해결하기 위한 코드이다.
import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame
from pandas import Series
# matplotlib 한글 폰트 출력코드
# 출처 : 데이터공방( https://kiddwannabe.blog.me)
import matplotlib
from matplotlib import font_manager, rc
import platform
try :
if platform.system() == 'Windows':
# 윈도우인 경우
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name)
else:
# Mac 인 경우
rc('font', family='AppleGothic')
except :
pass
matplotlib.rcParams['axes.unicode_minus'] = False
import pandas as pd
from pandas import DataFrame
from pandas import Series
df=pd.read_excel('NAVER.xls',skiprows=[0])
df
하지만 아번에도 역시나 read함수
파일 경로를 내게 맞춰 수정해줬음에도
해당 엑셀 파일을 찾을 수 없다면서
FileNotFoundError: [Errno 2] No such file or directory
라는 Error를 계속 반복하더라.
당연히 문법적으로 문제 없는 코드였고,
강사님과 동일한데 강사님만 잘 돌아가는
현상이 발생해서 확장자 명을 바꿔보기도
하고 파일을 새로 생성해 경로를 재지정해주기도
하고 다 해봤지만 해결이 되지 않아 혹시나
하는 마음에 엑셀 파일 명을 영어로 바꿔줬더니
제대로 작동했다😑 아니, 이럴거면 한글
폰트 출력 코드 왜 넣고, 왜 돌아간건데...
이래서 그냥 파일명들은 전부 영어로
해버리는 것이 속편하다. 그것도 가능한
특수문자나 띄어쓰기 없이...
여튼 여기까지 무사히 돌리면
이렇게 결과가 출력된다.
((((df['노출수'].sort_values())/1000).reset_index()).drop('index',axis=1)).plot(figsize=[13,5])
plt.yticks([0,2000,4000,6000,8000,10000],[0,'2,000,000','4,000,000','6,000,000','8,000,000','10,000,000'])
plt.title('노출수 plot',fontsize=20)
plt.show()
노출수에 대해 matplotlib으로
그래프를 출력하면 아래와 같이 나온다.
Matplotlib로 DataFrame 그래프 그리기
matplotlib로 어지간한 차트는
다 그릴 수 있는데 그중 제일
기본적인 몇 가지만 적어보자면
다음과 같다.
dict_data={"철수":[79,95,88,80],"영희":[95,75,80,75],"민수":[60,85,100,76],"수진":[88,100,60,75]}
df=DataFrame(dict_data)
df.index = ['국어', '수학', '영어', '과학']
# 선그래프
df.plot()
plt.show
# 막대그래프
df.plot.bar()
plt.show
# 가로막대그래프
df.plot.barh()
plt.show
# 히스토그램
df.plot.hist()
plt.show
# 히스토그램 구간설정
# df.plot.hist(bins=range(시작값, 미만값, 간격))
df.plot.hist()
plt.show
이건 정말 단순한 차트를
불러오기만 하는, 세팅 코드다.
# 그래프 크기 설정
df.plot.bar(figsize=[10, 6])
# 제목 설정 & 폰트 크기 설정
plt.title("예제 : 학생들 성적", fontsize=18)
# x,y축 이름 설정 & 폰트 크기 설정
plt.xlabel('과목', fontsize=16)
plt.ylabel('점수', fontsize=16)
# x축 눈금설정
## 설정할 눈금의 위치, 눈금의 이름 : 난 df에서 row이름을 변경해줘서 필요없는 과정이나 만약 index가 0,1,2 상태이고 이를 다른 이름으로 변경하고 싶다면 아래 코드 실행
plt.xticks(['0, 1, 2, 3'], ['국어', '수학', '영어', '과학])
## 폰트사이즈, 각도
# plt.xticks(['0, 1, 2, 3'], ['국어', '수학', '영어', '과학], fontsize=10, rotation=0)
plt.xticks(fontsize=10, rotation=0)
# y축 눈금설정 - 위와 동일
plt.yticks(fontsize=10)
# x, y축 범위 설정
plt.xlim([-1,4])
plt.ylim([50,100])
여기서 plt.xlabel(), plt.ylabel(),
plt.title() 등으로 축이름이나 그래프 이름을
지정할 수도 있고, -, --, -. , : 등으로 line style도
지정할 수 있다. 또한 b,g,r,c,m,y,k 등으로
선 색도 따로 지정할 수 있으며 그 외
폰트 등등 다양한데 그건 필요할 때마다
검색해서 활용하면 된다.
그리고 난 사전에 df를 생성해 놨기 때문에
df.plot으로 들어갔지만 그냥 바로 정의역과
치역을 대입해서 사용하는 경우라면
plt.plot([정의역], [치역])
이렇게 사용해야 한다.
Matplotlib로 Series 그래프 그리기
DataFrame 통째로가 아닌
column 한 줄(사람 별), 즉 Series 별로도
그래프를 그릴 수 있다.
df['철수']
# 선그래프
df['철수'].plot(color='m')
plt.show()
# 막대그래프
df['철수'].plot.bar(color='m')
plt.show()
# 가로막대그래프
df['철수'].plot.barhcolor='m'()
plt.show()
# 히스토그램(구간설정)
df['철수'].plot.hist(bins=range(75,100,5), color='m')
plt.show()
color='m' 는 그냥 재미로 넣어본거라
빼도 무관하다. 빼면 파란색 나옴.
위에서 했던 option들 복붙해와 붙여주면
df['철수'].plot.bar(figsize=[10, 6], color = 'y')
plt.title("철수 성적", fontsize=18)
plt.xlabel('과목', fontsize=16)
plt.ylabel('점수', fontsize=16)
plt.xticks(fontsize=10, rotation=0)
plt.yticks(fontsize=10, rotation=0)
plt.xlim([-1,4])
plt.ylim([50,100])
plt.show()
이렇게 쓸 수 있고, 그래프는
아래와 같이 출력된다.
다음엔 앞에서 봤던 NAVER 광고
지표를 matplotlib를 이용하여
시각화 해보는 연습을 할 것이다.
'Data Science > with Python(Numpy, Pandas …ect.)' 카테고리의 다른 글
[데이터분석 인강]검색광고 데이터 분석 : 데이터 탐색 시각화ver. (선그래프) (0) | 2022.07.09 |
---|---|
검색광고 데이터 분석 : 데이터 전처리&기본적인 데이터 탐색 (0) | 2022.07.09 |
Kaggle Survey EDA 03 : 직업과 관련된 EDA (0) | 2022.07.06 |
Kaggle Survey EDA 02 : 교육수준과 관련된 EDA (0) | 2022.07.06 |
Kaggle Survey EDA 01 : 전처리 (0) | 2022.07.06 |