如何使用Python發現強大的數據故事

[ad_1]
如何使用Python發現強大的數據故事

大量的情感故事和強大的故事隱藏在大量的數據中,等待被發現。

講完這些故事後,他們就有能力改變職業,企業和整個人群。

以惠而浦為例。他們發現了一個社會經濟問題,可以通過品牌來利用。

他們挖掘了數據以找到與之相適應的社會原因,並發現每天有4000名學生因為負擔不起衣服的清潔而輟學。

惠而浦向有高危兒童的學校捐贈了洗衣機和乾衣機,並跟蹤了出勤情況。

該品牌發現,這些學生中有90%的出勤率有所提高,幾乎相同數量的孩子的課堂參與度有所提高。該活動非常有效,贏得了許多獎項,包括戛納國際創意節創意數據收集和研究大獎賽。

大品牌可以負擔得起屢獲殊榮的創意機構,這些機構可以開展像這樣的活動,但對於大多數小型企業而言,這是不可能的。

引起關注的一種方法是找到有力的故事,由於營銷人員和數據科學家之間存在鴻溝,因此尚未被發現。

我介紹了一個簡單的框架來實現此目的,它圍繞著重新定義已經流行的可視化。存在重組的機會是因為營銷人員和開發人員在孤島中運作。

如何使用Python發現強大的數據故事「 width =」 1920「 height =」 1080「 size =」(最大寬度:1920px)100vw,1920px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / pasted_image_9_28_19__12_03_pm.png 1920w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/pasted_image_9_28_19__12_03_pm-480x270.png 480w,https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/09 / pasted_image_9_28_19__12_03_pm-680x383.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/pasted_image_9_28_19_12_03_pm-768x432.png 768w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/pasted_image_9_28_19__12_03_pm-1024x576.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/pasted_image_9_28_19__12_03_pm-1600x900.png 1600w數據」 src =「 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/pasted_image_9_28_19__12_03_pm.png

作為營銷人員,當您將數據項目移交給開發人員時,他們要做的第一件事就是刪除上下文。

開發人員的工作是概括。但是,當返回其結果時,您需要添加上下文,以便進行個性化設置。

沒有用戶上下文,開發人員將無法提出正確的問題,從而導致建立牢固的情感聯繫。

在本文中,我將向您介紹一個示例,向您展示如何通過ing帶流行的內容來提出強大的可視化和數據故事。

這是我們的行動計劃。

  • 我們將從subreddit重建流行的數據可視化 數據美麗
  • 我們將從公共網頁上收集數據(包括從移動圖表中收集的一些數據)。
  • 我們將通過詢問與原始作者不同的問題來重新構建可視化。

重新設計的可視化

如何使用Python揭示強大的數據故事「 width =」 3772「 height =」 1212「 Size =」(最大寬度:3772px)100vw,3772px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / reframed-final.png 3772w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/reframed-final-480x154.png 480w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/reframed-final-680x218.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/reframed-final-768x247.png 768w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/reframed-final-1024x329.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09 /reframed-final-1600x514.png 1600w「 data-src =」 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/reframed-final.png

這就是我們重新構圖的可視化外觀。它顯示了迪士尼最佳遊樂設施,按照其在不同年齡段的娛樂程度來排名。

如何使用Python揭示強大的數據故事「 width =」 3008「 height =」 1668「 size =」(最大寬度:3008px)100vw,3008px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / original.png 3008w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/original-480x266.png 480w,https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/09 / original-680x377.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/original-768x426.png 768w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/original-1024x568.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/original-1600x887.png 1600w「 data- src =「 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/original.png

這是原始的 在Reddit上分享。它顯示了迪士尼最佳遊樂設施與它們持續多長時間以及您需要排隊等候多長時間的比較。

我們重建的可視化

如何使用Python發現強大的數據故事「 width =」 2937「 height =」 1683「 Size =」(最大寬度:2937px)100vw,2937px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / rebuilt1.png 2937w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rebuilt1-480x275.png 480w,https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/09 / rebuilt1-680x390.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rebuilt1-768x440.png 768w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/rebuilt1-1024x587.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rebuilt1-1600x917.png 1600w「 data- src =「 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rebuilt1.png

我們的第一步是重建在subreddit中共享的原始可視化。數據科學家共享了他使用的數據源,但沒有共享代碼。

這給了我們一個很好的機會來學習如何在Python中抓取數據並將其可視化。

我將像往常一樣分享一些代碼段,但是您可以在此找到所有代碼 Google Colab筆記本

提取我們的源數據

原始可視化包含兩個數據集,一個包含行駛時間,另一個包含其平均等待時間。

首先,從此頁面收集乘車時間 https://touringplans.com/disneyland/attractions/duration

我們將完成以下步驟以提取乘車時間:

  1. 使用Google Chrome瀏覽器獲取帶有行駛持續時間的HTML DOM元素選擇器。
  2. 使用requests-html從源頁面中提取元素。
  3. 對持續時間數字使用簡單的正則表達式。

如何使用Python發現強大的數據故事「 width =」 2450「 height =」 1416「 Size =」(最大寬度:2450px)100vw,2450px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / rideduration.png 2450w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rideduration-480x277.png 480w,https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/09 / rideduration-680x393.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rideduration-768x444.png 768w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/rideduration-1024x592.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rideduration-1600x925.png 1600w「 data- src =「 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rideduration.png

接下來,我們需要從該頁面收集平均等待時間 https://touringplans.com/disneyland/wait-times

如何使用Python發現強大的數據故事「 width =」 2835「 height =」 1641「 Size =」(最大寬度:2835px)100vw,2835px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / movingcharts.png 2835w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/movingcharts-480x278.png 480w,https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/09 / movingcharts-680x394.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/movingcharts-768x445.png 768w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/movingcharts-1024x593.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/movingcharts-1600x926.png 1600w「 data- src =「 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/movingcharts.png

這是更具挑戰性的提取,因為我們想要的數據在移動圖表中。

我們將完成以下步驟以提取平均等待時間:

  1. 使用request-html從源頁面提取JavaScript代碼段。
  2. 使用正則表達式從JavaScript代碼中提取數據行以及圖表的遊樂設施名稱/標題。
  3. 使用Jinja2模板將自定義JavaScript函數拼湊在一起,該函數返回我們在步驟2中提取的值。
  4. 使用Py_mini_racer執行自定義JavaScript函數並以Python格式獲取數據。

為了將圖表中嵌入的JavaScript數據轉換為Python,我們將執行一個巧妙的技巧。

我們將使用要抓取的代碼片段將JavaScript函數拼接在一起。

我們將使用定界符來定義要提取的片段,並使用Jinja2模板在正常運行的JavaScript函數中將它們一起使用。該函數將返回包含騎行時間的字典。

我們將使用一個晦澀的庫執行這些功能, Py_mini_racer。該庫從Python運行JavaScript代碼,並返回我們可以使用的Python對象。

我嘗試使用 PyV8引擎 來自Google,但無法正常運行。看來該項目已被放棄。

現在,我們有了生成圖表所需的兩個數據集,但是首先需要進行一些處理。

處理我們的源數據

我們需要合併我們抓取的數據集,清理它們,計算平均值等。

我們將完成以下步驟:

  1. 將提取的數據集拆分為兩個Python字典。一種帶有時間戳,另一種帶有每次騎行的等待時間。
  2. 篩選少於64個數據點的遊樂設施,以使每次遊樂設施保持相同的數據行數。
  3. 計算每次騎行的平均等待時間。
  4. 將每次乘車的平均等待時間和乘車時間合併為一個數據幀。
  5. 用空列消除行。

這是最終數據幀的外觀。

如何使用Python發現強大的數據故事「 width =」 1408「 height =」 1154「 Size =」(最大寬度:1408px)100vw,1408px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / avgwaittimeandduration.png 1408w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/avgwaittimeandduration-480x393.png 480w,https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/09 / avgwaittimeandduration-680x557.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/avgwaittimeandduration-768x629.png 768w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/avgwaittimeandduration-1024x839.png 1024w「 data-src =」 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/avgwaittimeandduration.png可視化我們的數據

我們快要完成了。在這一步中,我們要做有趣的部分!可視化我們創建的數據框。

我們將完成以下步驟:

  1. 將pandas數據框轉換為面向行的字典。 X軸是平均等待時間,Y軸是騎行持續時間。標籤是「乘車」名稱。
  2. 採用 密謀 生成標記的散點圖。

您需要手動拖動標籤以使其更清晰。

如何使用Python發現強大的數據故事「 width =」 1200「 height =」 900「 Size =」(最大寬度:1200px)100vw,1200px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / newplot.png 1200w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/newplot-480x360.png 480w,https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/09 / newplot-680x510.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/newplot-768x576.png 768w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/newplot-1024x768.png 1024w「 data-src =」 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/newplot.png

最終,我們獲得了與Reddit上的原始圖像非常相似的可視化圖像。

在最後一步,我們將根據為該數據收集的相同數據生成原始可視化文件。

重新整理我們的數據

重建原始的可視化文件需要認真的工作,我們沒有生產任何新產品。我們將在最後一節中解決這個問題。

原始的可視化效果缺乏情感上的吸引力。如果遊樂設施對我來說不好玩怎麼辦?

我們將提取一個附加數據集:不同年齡段的每次騎行收視率。這將幫助我們將不確定的等待時間縮短的最佳遊樂設施形象化,並且對於特定年齡段的人來說,哪個遊樂設施會更有趣。

我們將完成以下步驟以重新構造原始可視化文件:

  1. 我們想知道哪個年齡段的人每次騎行都會最有趣。
  2. 我們將從中獲取每個年齡段的平均騎行等級 https://touringplans.com/disneyland/attractions
  3. 我們將計算每個乘車和年齡組的「娛樂分數」,即每次乘車的分鐘數除以平均等待時間。
  4. 我們將使用Plotly來顯示帶有結果的條形圖。

如何使用Python發現強大的數據故事「 width =」 2585「 height =」 1408「 Size =」(最大寬度:2585px)100vw,2585px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / rideratings.png 2585w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rideratings-480x261.png 480w,https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/09 / rideratings-680x370.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rideratings-768x418.png 768w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/rideratings-1024x558.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rideratings-1600x871.png 1600w「 data- src =「 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/rideratings.png

這是包含我們額外數據的頁面。

就像我們拉長了騎行時間一樣,我們刮擦它。

讓我們使用一個新指標來總結原始數據框架:享受得分。 ?

我們將其定義為等待時間的平均持續時間。這個數字越大,我們就應該越有趣,因為我們排隊的等待時間更少。

這就是我們新的「享受得分」指標所更新的數據框的外觀。

如何使用Python發現強大的數據故事「 width =」 1948「 height =」 1066「 Size =」(最大寬度:1948px)100vw,1948px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / enjoymentscore.png 1948w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/enjoymentscore-480x263.png 480w,https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/09 / enjoymentscore-680x372.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/enjoymentscore-768x420.png 768w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/enjoymentscore-1024x560.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/enjoymentscore-1600x876.png 1600w「 data- src =「 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/enjoymentscore.png

現在,讓我們對其進行可視化。

最後,我們獲得了這種美麗而又有價值的可視化效果。

如何使用Python發現強大的數據故事「 width =」 3249「 height =」 1043「 Size =」(最大寬度:3249px)100vw,3249px「 data-srcset =」 https://cdn.searchenginejournal.com/wp- content / uploads / 2019/09 / final_visual.png 3249w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/final_visual-480x154.png 480w,https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/09 / final_visual-680x218.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/final_visual-768x247.png 768w,https:// cdn。 searchenginejournal.com/wp-content/uploads/2019/09/final_visual-1024x329.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/final_visual-1600x514.png 1600w「 data- src =「 https://cdn.searchenginejournal.com/wp-content/uploads/2019/09/final_visual.png資源與社區項目

去年1月,我收到了一封電子郵件,啟動了我的「 Python十字軍東征」。 Braintree拒絕了RankSense的商家帳戶申請,因為他們將SEO視為高風險類別。

緊挨算命先生,郵購新娘和「快速致富」計劃!

我們已經進行了三周的整合。我感到非常生氣和尷尬。

去年,我在數據科學和AI社區中度過了愉快的時光。我學到了很多很酷的東西,玩得很開心。

我進入SEO領域的時間可能太長了。可悲的是,我們這一代人犯了一個大錯誤,那就是讓炒作和魔術欺騙人們對SEO的理解。

結果,太多的企業淪為熟人。

我可以選擇離開SEO社區,也可以嘗試鼓勵新一代人推動變革,以便我們的社區成為一個有趣而自豪的地方。

我決定留下,但我擔心試圖以最小的社會影響力自己推動變革將是不可能的。

幸運的是,我看著這個 強大的視頻,寫了這樣的 宣言,並全力以赴每月寫一些實用的Python文章。

我很高興看到不到六個月的時間,Python在SEO社區中無處不在,並且勢頭還在不斷增長。

我對我們的社區和未來的輝煌感到非常興奮。

現在,讓我繼續介紹我們每個月都會繼續開展的出色項目。因此,很高興看到更多人加入Python潮流。 ?

泰勒(Tyler)共享了一個使用文本排名摘要程序自動生成元描述的項目。

雨果分享了他的第一個腳本,該腳本可以自動導出SEMrush報告。

傑弗里(Jeffrey)正在研究一種AI工具,以打破作者的障礙,並開源他的Python後端。

Charly正在研究URL轉換器和分類器。

圖片積分

作者截取的所有屏幕截圖,2019年10月
後期圖片:由作者提供

相關文章