這篇文章對提高優化師效率非常有幫助,強烈推薦。(建議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?Timerimport?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學習筆記
本文為作者獨立觀點,不代表出海筆記立場,如若轉載請聯系原作者。