思路分析:获取百度统计本周地域流量和上周的地域流量分布
通过百度地域流量接口进行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 pdfrom pyecharts.charts import Barfrom pyecharts import options as optsfrom pyecharts.globals import ThemeTypefrom pyecharts.render import make_snapshotfrom snapshot_selenium import snapshot然后,调用pyecharts柱状图,对本周流量和上周流量进行对比分析,调用相应的函数:
最后我们运行函数得到可视化图片:
看到图片后,我们可以很清晰的对seo地域流量做一个分析,这对我们日常流量监控工作有着重要的意义,通过流量分析,我们可以看到流量变化幅度,是否收到影响等情况,好了,有不懂的地方可以关注淡墨流年pyseo