專注服務客戶二十年!教你用Pandas和Plotly進行數據可視化

全文共1948字,預計學習時長8分鐘

 

圖源:unsplash

 

設想一下,自己正在說服客戶投資公司,拿着員工成就記錄的excel表格就直接給客戶看了。換位思考,如果你是客戶的話會有什麼反應?數據太多難道不會讓人感到不知所措嗎?講真的,數據可視化了解一下。

 

數據可視化是將原始數據轉換成可視化的圖形和圖表,從而更易於理解,它的主要目的是更快地進行研究和數據分析,並有效傳達趨勢和模式。

 

相較於冗長的純文本,人腦能夠更好地理解具有視覺吸引力的數據。

 

圖源:Dribbble

 

 

kaggle數據集的清理和可視化

 

本文將在Kaggle選取一個數據集,按照要求清理數據,並嘗試將數據可視化。

 

首先,要從外部源加載數據並對其進行清理,這將會用到Pandas庫。在使用Pandas庫之前先要有序導入,可以通過使用Pandas進行導入。

 
import pandas as pd

 

接着加載從Kaggle獲取的CSV文件,並嘗試瞭解更多信息。

 

 

可以看到數據集共有9列。“日期(Date)”和“時間(Time)”列顯示上次更新的日期和時間。因爲不會用到“印度確診病例”和“國外確認病例”,所以先刪除這兩列。“時間”(Time)列也並不重要,也將其刪除。由於Data Frame中已經有索引,“序列號”(Sno)一列也是不需要的。

 

 

現在可以看到,數據幀只有5列數據。刪除冗餘數據是個好習慣,因爲保留冗餘數據會佔用不必要的空間,可能會導致運行中斷。

 

此處的Kaggle數據集每天都會更新,添加新數據並不會覆蓋原有數據。例如,4月13日的數據集有925行,每行代表一個特定邦的累積數據。但在4月14日,數據集有958行,這意味着4月14日添加了34 行新數據。

 

 

上圖中可以看到相同的邦名,但試着觀察其他列發生的變化。有關新確診病例的數據每天都被添加到數據集中,這種數據形式有助於瞭解傳播趨勢。比如隨時間增加的病例數,或者是進行時間序列分析。

 

但我們只想分析最新數據,而不是分析以往的數據,因此可以刪掉那些多餘行。首先,按日期降序排列數據,並通過使用邦名對數據進行分組,消除重複值。

 

 

可以看到,df_states數據幀只有30行,這意味着有一行專門顯示每個邦的最新統計數據。在使用日期列對數據幀進行排序時,將按照日期降序對數據幀進行排序(注意代碼中升序=False),

remove_duplicates會保存首個匹配值,並刪除所有重複值。

 

 

現在來聊聊數據可視化。我們將使用Plotly對上述數據幀進行可視化。柱狀圖、條形圖、散點圖都能有效解釋模式和趨勢,但由於要處理的是地理數據,所以筆者更建議使用分級統計圖。

 

 

什麼是分級統計圖?

 

運用Plotly繪製,分級統計圖按照地理區域進行劃分,這些區域相對於數據變量被塗上顏色或陰影。這些圖表能夠簡單快捷地顯示一個地理區域的數據值,表現出趨勢和模式。

 

圖源:Youtube

 

上圖中,各個區域根據人口密度呈現不同顏色。顏色越深意味着該地區人口越多。現在針對我們的數據集,創建一個基於確診病例的分級統計圖。確診病例越多,特定區域的顏色就越深。

 

如果想繪製一張印度地圖,需要一個帶有邦座標的shapefile文件。維基百科告訴我們,shapefile格式就是地理信息系統(GIS)的地理空間矢量數據格式。

 

在使用shapefile文件之前,需要安裝GeoPandas,這是一個python軟件包,可以輕鬆處理地理空間數據。

 
pip install geopandas
import geopandas as gpd

 

 

可以看到數據幀有一列是邦名,且其座標爲矢量形式。現在要把這個shapefile格式轉換成所需的JSON格式。

 
import json#Read data tojson.merged_json = json.loads(map_df.to_json())

 

下一步,使用Plotly Express.’ 的px.choropleth函數創建分級統計圖。製作分級統計圖需要幾何信息:

· 這可以由GeoJSON格式(上文已創建)提供,其中每個特性都具有唯一標識值(比如本例中的st-nm)

 

· Plotly中包含美國和世界其他各國在內的現有幾何信息

 

GeoJSON數據(即上文創建的merged_json)被傳遞給geojson參數,度量值被傳遞給px.choropleth的color參數。

 

每個分級統計圖都有一個locations參數,該參數以邦/國家爲參量。因爲要爲印度的不同邦創建一個分級統計圖,所以我們將State列傳遞給參數。

 


 
fig = px.choropleth(df_states,
                    geojson=merged_json,
                   color="Confirmed",
                   locations="State/UnionTerritory",
                   featureidkey="properties.st_nm",
                   color_continuous_scale  =["#ffffb2","#fecc5c","#fd8d3c","#f03b20","#bd0026"],
                   projection="mercator"
)fig.update_geos(fitbounds="locations",visible=False)fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})fig.show()

 

第一個參量是數據幀本身,顏色深淺將根據確診病例數值而變化。將fig.updtae_geos()中的visible 參數設置爲False,從而隱藏基本圖表和框架。還可以將fitbounds = "locations"設置爲自動縮放世界地圖,顯示人們感興趣的區域。

 

可以將鼠標放在各個區域上,瞭解更多相關信息。

 

數據可視化從前是一門被忽視的藝術,如今它的重要性逐漸被人們注意到了。這裏講到的只是處理數據的其中一種方法,事實上,數據可視化的世界千變萬化,等待你去探索。

 

我們一起分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 “讀芯術”

(添加小編微信:dxsxbb,加入讀者圈,一起討論最新鮮的人工智能科技哦~)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章