用資料產品的思維自我管理:滴答清單+爬蟲+視覺化報告
對於資料產品經理而言,日常工作是聚焦於一個研究物件(一個產品/業務線/業務場景),通過生產、加工、應用資料去監控去運作情況,再通過資料分析方法暴露出長處和不足,從而反饋給研究物件,使其運作得更好。
那麼一樣的道理:對於一個人來說,他自身就是一個研究物件,他的工作生活,日常行為都是可以生產資料去記錄追蹤、整理分析,然後評價反饋的。
所以一個人想要自律,就得用資料化運營的方法來管理自己。
資料產品主要的工作流程如下圖,此文將逐步講解如何構建自己的資料產品,以實現對自己的資料化管理。

資料產品工作流
生產資料
要生產能夠記錄自己日常工作、生活情況的資料,得藉助一款好用的時間、日程記錄和管理工具。滴答清單是我在同類產品中用得最為舒適的,因為牆裂推薦。
容我先晒(zhuang)成(ge)就(xx)。

滴答清單成就
這款產品的優點有很多,不少文章都有詳盡的分析。但我來說,它最能吸引我的點有以下之處:
-
科學全面的分類體系。清單體系、標籤體系、時間體系、優先順序體系,這些正交的劃分體系基本能將日常大大小小的事情劃分得很清晰,無論是記錄,查詢還是覆盤,都十分高效,且一目瞭然
分類體系
-
系統、全面的日曆檢視,很方便進行每日記錄和日程管理
日曆檢視
- 多平臺同步,無論是網頁端、win/mac的客戶端、android/ios端,甚至是智慧硬體,都能快速、準確同步,十分適合多場景、碎片化的記錄和寫作
- 簡約、優美、無廣告的UI設計風格
當然還有許多其他小的亮點,構成了這款產品儘管小眾但使用者忠誠度都比較高的特點。
如果你喜歡並習慣使用這個產品,並且深深地使用它對於日常事項的管理、記錄和執行,那麼它不僅僅是促進你自律的過程,還產生了自我管理的結果資料。
加工資料
有了資料之後,我們得采集到才能構建資料產品;何況自己生產的資料自己應當擁有,而不是隻放在別人的伺服器上。怎麼採集,python爬蟲啊!
稍微觀測一下,就很容易發現,滴答清單上的資料都以json形式通過調API來獲取;這樣就十分容易去採集和解析。

json資料
怎麼寫爬蟲程式碼,此文就不說了。值得一提的是,滴答清單還有一個優點就在於,它只需要登入一次,cookie壽命很長;這樣我們的爬蟲程式碼就只用一次登入過的cookie,都不用頻繁換了,十分便於資料採集。
然後我們就是通過爬蟲將自己源源不斷產生的資料來源源不斷地取回來儲存在自己的資料庫裡,這裡我只爬取已完成的工作項;記錄的表結構如下。
CREATE TABLE `dida_done_list` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `title` VARCHAR(128) DEFAULT NULL, `createdTime` VARCHAR(64) DEFAULT NULL, `tags` VARCHAR(256) DEFAULT NULL, `priority` TINYINT(4) DEFAULT NULL, `task_status` TINYINT(4) DEFAULT NULL, `completedTime` VARCHAR(64) DEFAULT NULL, `content` LONGTEXT, `scrapyed_time` VARCHAR(64) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `completedTime` (`completedTime` , `title`) )ENGINE=INNODB AUTO_INCREMENT=31692 DEFAULT CHARSET=UTF8
分析資料
在有了全部的滴答清單歷史資料之後,就可以很容易地檢視自己在某個時間點做了什麼事——當然我們做資料產品並不是為了緬懷過往,而是定期給自己覆盤和總結。
所以從業務(自我管理)的角度來看,覆盤時我主要關注以下幾個問題:
- 這段時間的產出如何(任務完成量)
- 與過去比起來如何(跨時段對比)
- 哪些方面的產出較為突出,哪些不足(分標籤對比)
- 這段時間所做事情的關鍵詞有哪些(中文分詞)
當然肯定還有更多的點可以挖掘,但你輸入給資料產品的不能是過於主觀、過於發散的問題,而是要具體、可量化、可複用、可程式化計算。
應用資料
對於資料分析師來說,業務週報是一項常見的工作。而我們的產品也可以採用週報的形式,只不過不是人來寫,而是程式自動發。(資料分析師與資料產品經理的區別在於:資料分析師必須聚焦於具體的問題和場景,case by case去分析和輸出建議;而資料產品經理則關注可複用的、擴充套件性和適用性強的、高效的場景和解決方案)
自動發郵件是一種常見的資料產品形式,也廣泛應用於各公司的資料團隊中。所以一個比較清晰的流程就是:
- 先爬蟲並寫入資料庫
- 再從庫裡讀取作資料分析,產生分析報告
- 最後把分析報告自動傳送至郵箱
說起分析報告,就不得不提起資料視覺化。很多業務人員覺得視覺化只是一種形式,並不影響資料和業務的本質,所以沒那麼重要。我本來也是尊重這個觀點的,可是在這個case中,也算是得到了一些教訓。
因為我不會前端技術,也不會用Python作資料視覺化(最主要的原因還是沒啥動力學這些技術),所以最初發送至郵件的報告是很醜的,醜成這樣:

一個很醜的報告-part1

一個很醜的報告-part2
沒有畫形,甚至表格都對不齊,這種報告可讀性太差。因為可讀性差,連我自己都逐漸懶得看;看都不看當然更不會去思考和總結。可是任務是我記錄的,資料是我採集的,分析也是我做的,程式碼都是我自己寫的,如果最後看都不看,那前面這些工作就沒多大意義了。
於是轉化一下思路:html是保持格式的一種良好的檔案格式,也是python自動發郵件程式支援的形式,所以最好是能直接發html形式的郵件(就是把html當作正文,而不是附件);自動發郵件程式裡輸入的是html原始碼,雖然不會寫html,但是我們可以用更專業的寫分析報告的工具 r markdown
去生成html檔案,然後用python讀取,傳入發郵件的程式裡,就可以直接傳送html格式的郵件了!

寫分析報告的rmarkdown程式
from send_email_html import * import os os.system("e: && cd E:\\R projects\\report_html_email && Rscript -e \"rmarkdown::render('E:/R projects/report_html_email/dida_weekly_report.Rmd',encoding='utf-8',output_dir='E:/Python-Projects/dida_lists')\"") htmlf=open('dida_weekly_report.html','r',encoding="utf-8") html=htmlf.read() send_mail(html,'滴答清單從%s到%s的週報!'%(start_date,end_date),'滴答清單週報')
通過以上的程式碼,可以在python中呼叫shell語句,去執行rmd檔案,生成html檔案;然後讀取html檔案,將原始碼傳入發郵件函式中,最後成功傳送郵件。
最後再看看更新之後的郵件自動傳送的週報效果!

優化後的報告-part1

優化後的報告-part2

優化後的報告-part3

優化後的報告-part4

優化後的報告-part5

優化後的報告-part6
現在效果好了很多了,就具備了閱讀、分析、思考和總結的基礎了!接下來只需要把爬蟲、分析、發郵件程式碼整合在一起,然後上定時排程就行(linux上 crontab
,windows上 schtasks
),一般一週採集、分析、報告一次就行。
所以在這裡,並沒有藉助多麼高大上的軟體產品,而是梳理、堅持一個清晰、簡單、可執行、可複用的流程,並輔以少量的技術,就能構建一個屬於自己,服務於自己日常工作生活,並有一定指導意義的資料產品了。
最後嘛,自律的人生是比較無趣且疲憊的,因為什麼都要有預期規劃,然後去努力執行;在這樣的影響之下,相對地就會有些排斥變故、意外和風險。不過人生的大多數,本來就是無趣的;自律有助於自己更加明確、低方差地朝目標前進。然而,正如資料本身只能輔助乃至指導業務,它只是業務的反映,而不是業務的本質,業務發展得怎麼樣並不直接由資料決定。同樣地,你是一個什麼樣的人(或是崇尚自由多變的,或是思維縝密執行力強的,或是對自己足夠狠的,或是做什麼都難以堅持的),也不由一個產品或一套流程決定的,得由你自己去認清並引導好自己的本質。