这篇文章对提高优化师效率非常有帮助,强烈推荐。(建议pc端打开方便对其中链接及代码进行操作)
本文导航:
-
工具介绍
-
代码及工具设置步骤
-
如何完全自动化及代码链接
下面简单介绍一下上述三个工具的作用以及为什么使用他们:
Google Colaboratory:
https://colab.research.google.com/
稍微了解python+jupyter的朋友可以理解为一个网页版内置了python2/3以及几乎所有libiray的编译器,主要用来做数据分析和机器学习。刚接触的朋友可以理解为,你如果想写python 但不知道要下载什么软件,如何设置环境之类的话,那么打开它的网址就可以开写了。它可以用本地文件,google文件,bq等很多地方直接读取/存入数据,但是google data studio不在“很多地方”之内。
Google Data Studio:
https://datastudio.google.com/
2016年谷歌发布的一款线上数据可视化工具,它可以从google文件,bq,本地文件等内外部一共181个地方拉取数据并依据设定好的模型直接变成可视化的透视表/饼状图/散点图/走势图等形式。甚至包含了Facebook,amazon等竞争对手的借口,但唯独不能直接链接google colaboratory。如果你对tableau的价格望而却步的话,那么打开它就对了:
https://datastudio.google.com/
Google sheet:
https://drive.google.com/
线上版的excel,由于上述的两位同学彼此之间没有接口,所以为了实现全部线上操作,尽可能人为步骤解放双手,我选择用google sheet作为colaboratory 和 data studio的中转站。
总体的思路总结为:
-
在云盘里预先制作一个google sheet空表并命名(仅需初次操作),后续每次代码运行自动打开,清空前一个小时的数据,并把新数据写入(该步骤由google colaboratory实现,以下简称colab)
-
接下来我要有数据,可以是本地上传的,可以是通过api在不同地方拉出来的,把这些数据导入colab(该步骤由colab.python实现)
-
那么得到这个数据之后,需要对数据做一下清理变成想要的小时维度,以及去掉多余的列。清理好数据之后,把数据写入到中转站google sheet里(该步骤同样由colab.python+gspread实现)
-
在google data studio设置好可视化模型(仅需初次操作),后续全部自动更新(在不断网的情况下...)
接下来我们以上述4个步骤来按顺序进行讲解
步骤一:创建中转站 google sheet
(步骤一结束)
步骤二:获得数据
这里的话要先分两个方向了
from
threading
import
Timer
import
time
来定时运行,不过由于不同平台api不同,所以不在这里做过多讨论,感兴趣对朋友可以case by case沟通。
#thanks Devon
2.2 所以这里介绍一下第二种方式做过度:假设你已把原始数据下载到本地(请保证为UTF-8的csv格式),那么直接上传csv数据到colab做处理。这种方式也更使用大多数没有api方式的朋友。
从google colab里导入files库,并且利用里面uploaded功能把文件上传到google上。
从google colab里导入files库,并且利用里面uploaded功能把文件上传到google上。
from google.colab import auth
auth.authenticate_user()
#上述两行代码用来做谷歌账户授权的认证
from google.colab import files
uploaded = files.upload()
#从本地上传文件
(弹出输入框点击上传)
(提示100%done后成功)
步骤三:处理数据并将数据写入事先创建的中转站google sheet中
import pandas as pd
#导入pandas库,并在下文用pd代表
df=pd.read_csv('ticket information.csv', header=0)
#用pd读取刚刚上传的表格,转换成dataframe格式,命名为df
df
#输入df,打印出来看看效果,后续请把这行删掉
如果everything is ok的话,那么你会发现本地的excel表就已经出现在colab里了。删掉df,继续。
df['ticket time'] = pd.to_datetime(df['ticket time],format='%Y-%m-%d %H:%M:%S')
#ticket time有点乱,所以我们要把他转换成datetime这种 ’年-月-日 时-分-秒‘ 格式
df['ticket time'] = df['ticket time'].dt.strftime('%H')
#因为我们要按小时数据,所以我们只把小时 h 输入到srttime去读取并更新ticket time列,同理你如果想要年月日层级,做相应替换就好
hourlyreport=pd.DataFrame(df,columns=['ticket time','type','channel','clinet ID']) #只摘出我们需要的几列,并将其命名为hourlyreport hourlyreport.to_csv('hourlyreport.csv',encoding='utf-8',index=False) #将新生成的dataframe转换成hourlyreport.csv,utf-8 编译格式,index=flase意在去掉colab自动添加的行数标签
扩展:关于如何将生成的csv下载到本地,以及如何直接在里面做数据透视并生成图标和图片。
将生成的csv下载到本地:
from google.colab import files files.download("hourlyreport.csv")
如何直接做数据透视并生成图片和报表
hourlyreport=pd.pivot_table(hourlyreport, index=['ticket time'],columns='type',values='type',aggfunc='count')
hourlyreport.plot(kind='bar')
hourlyreport
from gspread_dataframe import get_as_dataframe, set_with_dataframe import gspread from oauth2client.client import GoogleCredentials gc = gspread.authorize(GoogleCredentials.get_application_default()) sheet = gc.open('hourly information').sheet1 sheet.resize(rows=1) sheet.resize(rows=30) sheet.delete_row(1) set_with_dataframe(sheet,hourlyreport,include_column_header = True,resize=True) #thanks bob for helping me sort out the problem
对于数据导入步骤,之前尝试过import.sheet,数据确实会覆盖到新表,但是如果你没关掉表格的话会在浏览器上面看到sheet页面刷新了以此,实际上这样是生成一个新表来替换之前的表格。这样在后续data studio从数据源再刷新数据的时候就已经不认得之前的表格了,好下面我们说最后一步从sheet将数据导入到data studio中并自动刷新。
4.1 在datastudio中链接刚刚的google sheet,依次是:Resource-Manage added data sources-Google sheet-选定好特定的表-Connect
-
有一个api定时可以拉取数据到colab里进行处理(case by case)
-
datatudio已经联网就可以每15分钟自动刷新,而你的sheet1小时更新一次,so~
代码链接:
https://colab.research.google.com/drive/17_BnzjSZD76o5fW_BqJbLYRt9mSbSewO
作者:Alex 来源:Alex学习笔记
本文为作者独立观点,不代表出海笔记立场,如若转载请联系原作者。