思路分析:获取百度统计本周地域流量和上周的地域流量分布
通过百度地域流量接口进行post请求,获取地域流量json数据:
将响应的进行解析数据,将数据通过openpyxl库保存本地表格中。
一、读取excel表格数据
read_ex = pd.read_excel(r'F:\SEO工作\tongji.xlsx',sheet_name=1)
print(read_ex)
二、取出指定列数据
由于每周的地域流量数据都是按日期依次向后保存,那么我们只要取出本周和上周的地域和流量进行分析,也就是说只要获取后四列的数据就可以了,通过行列置换,然后切片获取。
行列置换,切片获取
df = read_ex.T[-4:].T
改变列名,去除总计这一行,并将本周地域和流量、上周地域和流量进行分开
df.columns = ['date1','ip1','date2','ip2']
df01 = df[['date1','ip1']]
total_index = df01[df01.date1 == '总计'].index.tolist()[0]
df01 = df01.head(total_index)
df02 = df[['date2','ip2']]
total_index = df02[df02.date2 == '总计'].index.tolist()[0]
df02 = df02.head(total_index)
print(df01)
print(df02)
由于保存在表格中本周地域和上周地域有不同的城市,需要对本周和上周缺省城市进行补齐,并且城市顺序也不同,我们需要进行条件判断,和利用数组的掩码操作去置换相同的顺序
判断彼此是否有缺少的城市
df01_city_zi = set(df01['date1']) - set(df02['date2'])
if df01_city_zi:
for df01_zi in df01_city_zi:
zi_01 = pd.DataFrame({'date1':[df01_zi],'ip1':[0]})
df02.append(zi_01)
df02_city_zi = set(df02['date2']) - set(df01['date1'])
if df02_city_zi:
for df02_zi in df02_city_zi:
zi_02 = pd.DataFrame({'date1':[df02_zi],'ip1':[0]})
df01.append(zi_02)
进行数组掩码排序
mask = []
for area in df01['date1']:
index = list(df02['date2']).index(area)
mask.append(index)
df02_city = df02['date2'][mask]
df02_ip = df02['ip2'][mask]
好了,到这地方我们已经数据进行清理完了,接下来就是利用可视化工具对数据进行可视化操作,这里用到pyecharts库进行数据可视化,首先自然是导包了
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
然后,调用pyecharts柱状图,对本周流量和上周流量进行对比分析,调用相应的函数:
最后我们运行函数得到可视化图片:
看到图片后,我们可以很清晰的对seo地域流量做一个分析,这对我们日常流量监控工作有着重要的意义,通过流量分析,我们可以看到流量变化幅度,是否收到影响等情况,好了,有不懂的地方可以关注淡墨流年pyseo