키워드 데이터 분석
패스트캠퍼스 키워드 데이터 분석
import pandas as pd
from pandas import DataFrame
from pandas import Series
import seaborn as sns
import matplotlib.pyplot as plt
# 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
df=pd.read_excel('naverreport.xls')
df.head()
캠페인보고서(2019.02.01.~2019.04.30.),ftasia | Unnamed: 1 | Unnamed: 2 | Unnamed: 3 | Unnamed: 4 | Unnamed: 5 | Unnamed: 6 | |
---|---|---|---|---|---|---|---|
0 | 광고그룹 | 키워드 | 노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) |
1 | 올인원 패키지 : 디자인 툴_파워컨텐츠_포토샵 | - | 2319456 | 9606 | 0.414149 | 261.549448 | 2512444 |
2 | 올인원 패키지 : 업무자동화_VBA | - | 767491 | 8058 | 1.049915 | 295.974808 | 2384965 |
3 | ㅍAOP 전체_중복키워드_디자인(삭제) | 일러스트 | 1137840 | 324 | 0.028475 | 4841.66358 | 1568699 |
4 | 올인원 패키지 : 데이터 분석 입문 온라인_파콘 | - | 694106 | 1863.6 | 0.268489 | 630.593475 | 1175174 |
df=pd.read_excel('naverreport.xls',skiprows=[0])
df.head()
광고그룹 | 키워드 | 노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|---|---|
0 | 올인원 패키지 : 디자인 툴_파워컨텐츠_포토샵 | - | 2319456 | 9606.0 | 0.414149 | 261.549448 | 2512444 |
1 | 올인원 패키지 : 업무자동화_VBA | - | 767491 | 8058.0 | 1.049915 | 295.974808 | 2384965 |
2 | ㅍAOP 전체_중복키워드_디자인(삭제) | 일러스트 | 1137840 | 324.0 | 0.028475 | 4841.663580 | 1568699 |
3 | 올인원 패키지 : 데이터 분석 입문 온라인_파콘 | - | 694106 | 1863.6 | 0.268489 | 630.593475 | 1175174 |
4 | 3. html | HTML | 9626374 | 813.6 | 0.008452 | 1408.435349 | 1145903 |
키워드 기준 group
grouped = df.groupby('키워드')
grouped
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000124B3781EE0>
grouped.count()
광고그룹 | 노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|---|
키워드 | ||||||
- | 8 | 8 | 8 | 8 | 8 | 8 |
10억건물 | 1 | 1 | 1 | 1 | 1 | 1 |
11번가상품등록 | 1 | 1 | 1 | 1 | 1 | 1 |
11번가입점 | 1 | 1 | 1 | 1 | 1 | 1 |
11번가판매자 | 1 | 1 | 1 | 1 | 1 | 1 |
... | ... | ... | ... | ... | ... | ... |
회계 | 1 | 1 | 1 | 1 | 1 | 1 |
회계책 | 1 | 1 | 1 | 1 | 1 | 1 |
회사분위기 | 1 | 1 | 1 | 1 | 1 | 1 |
회사소개서 | 1 | 1 | 1 | 1 | 1 | 1 |
후위표기법 | 1 | 1 | 1 | 1 | 1 | 1 |
1112 rows × 6 columns
grouped.mean()
노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|
키워드 | |||||
- | 510444.5 | 2636.7 | 0.516004 | 388.533776 | 848233.375 |
10억건물 | 1976.0 | 2.4 | 0.121457 | 1283.333333 | 3080.000 |
11번가상품등록 | 1034.0 | 1.2 | 0.116054 | 2667.500000 | 3201.000 |
11번가입점 | 1580.0 | 1.2 | 0.075949 | 522.500000 | 627.000 |
11번가판매자 | 4948.0 | 3.6 | 0.072757 | 275.000000 | 990.000 |
... | ... | ... | ... | ... | ... |
회계 | 3269.0 | 0.0 | 0.000000 | 0.000000 | 0.000 |
회계책 | 3742.0 | 0.0 | 0.000000 | 0.000000 | 0.000 |
회사분위기 | 3599.0 | 1.2 | 0.033343 | 64.166667 | 77.000 |
회사소개서 | 5592.0 | 0.0 | 0.000000 | 0.000000 | 0.000 |
후위표기법 | 1516.0 | 0.0 | 0.000000 | 0.000000 | 0.000 |
1112 rows × 5 columns
grouped.median()
노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|
키워드 | |||||
- | 114258.5 | 608.4 | 0.428236 | 317.072650 | 301988.5 |
10억건물 | 1976.0 | 2.4 | 0.121457 | 1283.333333 | 3080.0 |
11번가상품등록 | 1034.0 | 1.2 | 0.116054 | 2667.500000 | 3201.0 |
11번가입점 | 1580.0 | 1.2 | 0.075949 | 522.500000 | 627.0 |
11번가판매자 | 4948.0 | 3.6 | 0.072757 | 275.000000 | 990.0 |
... | ... | ... | ... | ... | ... |
회계 | 3269.0 | 0.0 | 0.000000 | 0.000000 | 0.0 |
회계책 | 3742.0 | 0.0 | 0.000000 | 0.000000 | 0.0 |
회사분위기 | 3599.0 | 1.2 | 0.033343 | 64.166667 | 77.0 |
회사소개서 | 5592.0 | 0.0 | 0.000000 | 0.000000 | 0.0 |
후위표기법 | 1516.0 | 0.0 | 0.000000 | 0.000000 | 0.0 |
1112 rows × 5 columns
grouped.sum()
노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|
키워드 | |||||
- | 4083556 | 21093.6 | 4.128033 | 3108.270211 | 6785867 |
10억건물 | 1976 | 2.4 | 0.121457 | 1283.333333 | 3080 |
11번가상품등록 | 1034 | 1.2 | 0.116054 | 2667.500000 | 3201 |
11번가입점 | 1580 | 1.2 | 0.075949 | 522.500000 | 627 |
11번가판매자 | 4948 | 3.6 | 0.072757 | 275.000000 | 990 |
... | ... | ... | ... | ... | ... |
회계 | 3269 | 0.0 | 0.000000 | 0.000000 | 0 |
회계책 | 3742 | 0.0 | 0.000000 | 0.000000 | 0 |
회사분위기 | 3599 | 1.2 | 0.033343 | 64.166667 | 77 |
회사소개서 | 5592 | 0.0 | 0.000000 | 0.000000 | 0 |
후위표기법 | 1516 | 0.0 | 0.000000 | 0.000000 | 0 |
1112 rows × 5 columns
df_group=grouped.sum()
df_group
노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|
키워드 | |||||
- | 4083556 | 21093.6 | 4.128033 | 3108.270211 | 6785867 |
10억건물 | 1976 | 2.4 | 0.121457 | 1283.333333 | 3080 |
11번가상품등록 | 1034 | 1.2 | 0.116054 | 2667.500000 | 3201 |
11번가입점 | 1580 | 1.2 | 0.075949 | 522.500000 | 627 |
11번가판매자 | 4948 | 3.6 | 0.072757 | 275.000000 | 990 |
... | ... | ... | ... | ... | ... |
회계 | 3269 | 0.0 | 0.000000 | 0.000000 | 0 |
회계책 | 3742 | 0.0 | 0.000000 | 0.000000 | 0 |
회사분위기 | 3599 | 1.2 | 0.033343 | 64.166667 | 77 |
회사소개서 | 5592 | 0.0 | 0.000000 | 0.000000 | 0 |
후위표기법 | 1516 | 0.0 | 0.000000 | 0.000000 | 0 |
1112 rows × 5 columns
#클릭률(ctr) = 클릭수 / 노출수
#데이터전처리 - 데이터프레임의 열 단위 수치연산
df_group['클릭률(%)']=df_group['클릭수']/df_group['노출수']
df_group.head()
노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|
키워드 | |||||
10억건물 | 1976 | 2.4 | 0 | 1283 | 3080 |
11번가상품등록 | 1034 | 1.2 | 0 | 2668 | 3201 |
11번가입점 | 1580 | 1.2 | 0 | 522 | 627 |
11번가판매자 | 4948 | 3.6 | 0 | 275 | 990 |
1인미디어 | 37024 | 31.2 | 0 | 1828 | 57035 |
# 평균클릭비용 칼럼 반올림처리(round), 소수점 제거(astype(int)
df_group['평균클릭비용(VAT포함,원)']=round(df_group['평균클릭비용(VAT포함,원)'],0)
df_group['평균클릭비용(VAT포함,원)']=df_group['평균클릭비용(VAT포함,원)'].astype(int)
df_group.head()
노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|
키워드 | |||||
- | 4083556 | 21093.6 | 0.005165 | 3108 | 6785867 |
10억건물 | 1976 | 2.4 | 0.001215 | 1283 | 3080 |
11번가상품등록 | 1034 | 1.2 | 0.001161 | 2668 | 3201 |
11번가입점 | 1580 | 1.2 | 0.000759 | 522 | 627 |
11번가판매자 | 4948 | 3.6 | 0.000728 | 275 | 990 |
df_group['클릭률(%)']=round(df_group['클릭률(%)'],0)
df_group['클릭률(%)']=df_group['클릭률(%)'].astype(int)
df_group.head()
노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|
키워드 | |||||
- | 4083556 | 21093.6 | 0 | 3108 | 6785867 |
10억건물 | 1976 | 2.4 | 0 | 1283 | 3080 |
11번가상품등록 | 1034 | 1.2 | 0 | 2668 | 3201 |
11번가입점 | 1580 | 1.2 | 0 | 522 | 627 |
11번가판매자 | 4948 | 3.6 | 0 | 275 | 990 |
df_group.drop(['-'],inplace=True)
df_group
노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|
키워드 | |||||
10억건물 | 1976 | 2.4 | 0 | 1283 | 3080 |
11번가상품등록 | 1034 | 1.2 | 0 | 2668 | 3201 |
11번가입점 | 1580 | 1.2 | 0 | 522 | 627 |
11번가판매자 | 4948 | 3.6 | 0 | 275 | 990 |
1인미디어 | 37024 | 31.2 | 0 | 1828 | 57035 |
... | ... | ... | ... | ... | ... |
회계 | 3269 | 0.0 | 0 | 0 | 0 |
회계책 | 3742 | 0.0 | 0 | 0 | 0 |
회사분위기 | 3599 | 1.2 | 0 | 64 | 77 |
회사소개서 | 5592 | 0.0 | 0 | 0 | 0 |
후위표기법 | 1516 | 0.0 | 0 | 0 | 0 |
1111 rows × 5 columns
데이터 시각화
df_group['클릭수'].plot()
plt.xticks(fontsize=5) #x라벨 size 조절(10억건물등...)
plt.show()
imp=df_group['노출수']
clk=df_group['클릭수']
result = df_group[(imp>imp.quantile(0.95))&(clk>clk.quantile(0.95))]
result
노출수 | 클릭수 | 클릭률(%) | 평균클릭비용(VAT포함,원) | 총비용(VAT포함,원) | |
---|---|---|---|---|---|
키워드 | |||||
HTML | 10540218 | 894.0 | 0 | 2602 | 1241867 |
가상화폐 | 91369 | 2838.0 | 0 | 283 | 803770 |
글씨체 | 106648 | 216.0 | 0 | 425 | 91806 |
마블 | 907619 | 228.0 | 0 | 265 | 60533 |
마케팅 | 392941 | 241.2 | 0 | 3431 | 280742 |
바이럴마케팅 | 3095998 | 261.6 | 0 | 220 | 57563 |
블록체인 | 347748 | 3117.6 | 0 | 4914 | 975172 |
스케치 | 300594 | 168.0 | 0 | 1959 | 182864 |
에프터이펙트 | 113863 | 282.0 | 0 | 8629 | 270996 |
엑셀 | 2043217 | 541.2 | 0 | 2081 | 668206 |
영상편집 | 140077 | 372.0 | 0 | 7585 | 862763 |
인디자인 | 187745 | 562.8 | 0 | 5824 | 246026 |
일러스트 | 1238949 | 358.8 | 0 | 8992 | 1713129 |
일러스트레이터 | 250333 | 783.6 | 0 | 5623 | 280170 |
컴퓨터활용능력 | 139729 | 1534.8 | 0 | 239 | 367147 |
컴퓨터활용능력1급 | 94757 | 1191.6 | 0 | 237 | 282018 |
컴퓨터활용능력2급 | 88751 | 1282.8 | 0 | 234 | 300058 |
코딩 | 562162 | 271.2 | 0 | 3243 | 879560 |
파이썬 | 418986 | 272.4 | 0 | 6070 | 978450 |
펀드 | 157068 | 208.8 | 0 | 468 | 53097 |
포토샵 | 3731749 | 3218.4 | 0 | 5167 | 1527383 |
폰트 | 478588 | 474.0 | 0 | 396 | 187693 |
프리미어프로 | 340821 | 171.6 | 0 | 2775 | 255299 |
bar = result['클릭수'].plot.bar(grid=True)
plt.xticks(fontsize=8) #x라벨 size 조절(10억건물등...)
bar.set_xlabel("키워드")
plt.show()