--05.검색광고 데이터분석.ipynb--
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os
base_path = r'/content/drive/MyDrive/dataset'
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
file_path = os.path.join(base_path, '네이버보고서.xls')
file_path
df = pd.read_excel(file_path)
df.head()
df = pd.read_excel(file_path, skiprows=[0])
df.head()
df.info()
df.shape
df.isnull()
df.isnull().sum() # 열 단위로 결측치 확인(True = 1, False = 0 이기 때문에.)
df.isnull().sum(axis = 1)
위 '열' 에 대해 진행할겁니다.
df.head()
df['클릭수']
clk = round(df['클릭수'], 0)
clk
clk.astype(int)
df['클릭수'] = clk.astype(int)
df.head()
이러한 전처리를 어떻게 하는지 보자
df['클릭수'] / df['노출수'] *100
df.columns
df['클릭률(%)'] = df['클릭수'] / df['노출수'] *100
df.head()
평균클릭비용 : 칼럼명에 원 단위로 명시됨
=> 반올림처리, 일의 자리수로 변경
('클릭수' 전처리와 비슷)
cpc = round(df['평균클릭비용(VAT포함,원)'])
cpc
df['평균클릭비용(VAT포함,원)'] = cpc.astype(int)
df.head()
df.describe()
pd.set_option('display.float_format', '{:.2f}'.format)
df.describe()
df.head()
df['광고그룹'].unique()
len(df['광고그룹'].unique())
df['키워드'].unique()
len(df['키워드'].unique())
df['광고그룹'].value_counts()
df['노출수'].sort_values(ascending=False) # ascending=False 를 하면 내림차순으로 보여줌.
df['노출수'].plot()
df['노출수'].sort_values()
df['노출수'].sort_values().reset_index(drop=True)
df['노출수'].sort_values().reset_index(drop=True).plot()
df['클릭수'].sort_values().reset_index(drop=True).plot()
df['총비용(VAT포함,원)'].sort_values().reset_index(drop=True).plot()
df.columns
imp = df['노출수']
imp
imp.quantile() # quantile - 분위수 출력(default : 2사분위(중앙값))
df.describe()
imp.median()
imp.quantile(0)
imp.quantile(1)
imp.quantile(0.95)
imp[imp > imp.quantile(0.95)]
imp = imp[imp > imp.quantile(0.95)]
imp
df.head()
df_index = df.set_index('키워드')
df_index
imp = df_index['노출수']
imp
imp = imp[imp >= imp.quantile(0.95)]
imp
df2_index = df.set_index('키워드')
df2_index
clk = df2_index['클릭수']
clk
clk = clk[clk >= clk.quantile(0.95)]
clk
imp = df_index['노출수']
clk = df_index['클릭수']
result = df_index[(imp >= imp.quantile(0.95)) & (clk >= clk.quantile(0.95))]
result
result.index
df['노출수'].sort_values().reset_index(drop=True).plot()
df['클릭수'].sort_values().reset_index(drop=True).plot()
df['총비용(VAT포함,원)'].sort_values().reset_index(drop=True).plot()
cost = df_index['총비용(VAT포함,원)']
result = df_index[(imp < imp.quantile(0.95)) &
(clk < clk.quantile(0.95)) &
(cost >= cost.quantile(0.85)) &
(cost < cost.quantile(0.95))]
result