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

2021-01-11 讀芯術

全文共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學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • Python可視化工具推薦:圖片交互性行極佳的Plotly
    1、 簡單介紹一般大家在學習python機器學習的時候,用的最多的可視化的包就是matplot和seaborn, 這2個可視化的優點在於門檻低,代碼容易理解,並且容易上手。唯一的可能的缺點就是畫出來的圖不能交互,簡單來說就是matplot和seaborn給出的就是一個圖片,當將滑鼠放到圖上的時候,不會顯示出圖中具體的數字是多少,而使用plotly之後,可以將圖片放大縮小,可以顯示與不顯示不同類別數據,等等。並且更加方便的是,這個圖可以嵌入到html裡面,可以直接放到網頁上面。我們話不多說,用matplot和plotly來展示相同的數據。
  • 如何用pandas更快地進行數據可視化?
    作者:劉早起來源:早起Python(公眾號)如果你經常使用Python進行數據分析,那麼對於pandas一定不會陌生,但是Pandas除了在數據處理上大放異彩,隨著版本的不斷更新,Pandas的繪圖功能在某些情況下甚至要比matplotlib更加適用,本文就將介紹如何用
  • 5個可以幫助pandas進行數據預處理的可視化圖表
    數據科學和機器學習項目的結構化方法從項目目標開始。同一組數據點可以推斷出一些有意義的信息。基於我們所尋找的,我們需要關注數據的另一個方面。一旦我們明確了目標,我們就應該開始考慮我們需要的數據點。這將使我們能夠專注於最相關的信息集,而忽略可能不重要的數據集。
  • 使用Plotly創建帶有回歸趨勢線的時間序列可視化圖表數據
    作為第一步,對數據進行分組、組織和排序,以根據所需度量的時間生成計數。但是,如果您想按月或年進行分組呢?為了完成這個任務,使用Grouper參數的頻率。最後,作為DataFrame準備的最後一步,通過「計數」將數據分組——我們在處理Plotly之後會回到這個問題上。  在所有的圖形庫中,Plotly是可視化效果最好的了,但是他也存在一些問題。好的一方面是,Plotly能夠產生出色的可視化效果,並與HTML集成。從不好的是,在單圖和混合圖之間切換時,語法可能會非常混亂。
  • 使用Pandas,Seaborn和Plotly繪製漂亮的圖表
    我用Gapminder和Wikipedia的信息豐富了《世界幸福報告》數據,以便探索新的關係和可視化。《世界幸福報告》試圖回答哪些因素影響著全世界的幸福。報告中的幸福定義為對" Cantril階梯問題"的回答,要求被調查者以0到10的等級來評價他們今天的生活,最糟糕的為0,最好的為10。在整篇文章中,我將使用Life Ladder作為目標變量。
  • Pandas可視化綜合指南:手把手從零教你繪製數據圖表
    曉查 編譯整理量子位 出品 | 公眾號 QbitAI數據可視化本來是一個非常複雜的過程,但隨著Pandas數據幀plot()函數的出現,使得創建可視化圖形變得很容易。在數據幀上進行操作的plot()函數只是matplotlib中plt.plot()函數的一個簡單包裝 ,可以幫助你在繪圖過程中省去那些長長的matplotlib代碼。
  • 這10 個 Python 可視化工具,你都用過?
    它的設計和在1980年代被設計的商業化程序語言MATLAB非常接近。 由於 matplotlib 是第一個 Python 可視化程序庫,有許多別的程序庫都是建立在它的基礎上或者直接調用它。 比如pandas和Seaborn就是matplotlib的外包,它們讓你能用更少的代碼去調用 matplotlib的方法。
  • 如何構建一個基於可視化理論的完美Python圖表?
    將Plotly介紹給這些受眾,使用數據並通過探究人工智慧和數據領域的文章來進行自我提升。3. 涵蓋可視化理論的基礎知識,以及足以使在擁擠數字領域中的工作吸引從業者眼球的先進技術。本文包含的代碼是對我的教程plot.py的摘錄,我將對其進行擴展使得3d繪圖,動畫等的最佳實踐也包含進來。對兩個繪圖工具Matplotlib和Plotly的使用將貫穿本教程。
  • 38萬條數據,用Python分析保險產品交叉銷售相關因素!
    CDA數據分析師 出品 作者:真達、Mika數據:真達 【導讀】今天的內容是一期Python實戰訓練,我們來手把手教你用Python分析保險產品交叉銷售和哪些因素有關。數據劃分為訓練集和測試集,訓練數據包含381109筆客戶資料,每筆客戶資料包含12個欄位,1個客戶ID欄位、10個輸入欄位及1個目標欄位-Response是否響應(1代表感興趣,0代表不感興趣)。測試數據包含127037筆客戶資料;欄位個數與訓練數據相同,目標欄位沒有值。欄位的定義可參考下文。下面我們開始吧!
  • 如何在Python中創建交互式可視化?(建議收藏)
    如何在Python中創建交互式可視化。在探索添加更多交互控制項之前,我們將僅以不同格式繪製數據開始。如果您一直關注我一段時間,會注意到這是數據可視化系列文章中的第三篇。首先使用默認的python可視化庫matplotlib引入了數據可視化。然後,我們學習了如何使用相同的庫在時間序列上創建動畫可視化效果。
  • 手把手教你用Matplotlib進行數據可視化
    03 可視化外部數據集的數據作為本文的最後一個測試,讓我們可視化一些來自外部數據集的數據,例如scikit-learn的digits數據集。具體來說,我們將需要3個可視化工具: 用於實際數據的scikit-learn  用於數據處理的NumPy  Matplotlib首先,讓我們導入所有這些可視化工具:import numpy as np  from sklearn import datasets  import matplotlib.pyplot as plt  %matplotlib
  • Pandas自動進行探索性數據分析,節省可視化和理解數據的時間
    EDA通常是一項非常耗時的任務,需要您構建多個視覺效果來檢查變量之間的分布和交互。有一些函數(例如info()和describe())在一定程度上有所幫助,但是即使使用了這些函數,您仍然必須執行許多手動步驟。這是一個非常實用的庫,叫做Pandas Profiling。該庫自動生成詳細的報告,只需一行代碼即可解釋數據!快速瀏覽一下報告的外觀。
  • 可視化工具不知道怎麼選?深度評測5大Python數據可視化工具
    作者 | 劉早起來源 | 早起Python(ID: zaoqi-python)相信很多讀者學習Python就是希望作出各種酷炫的可視化圖表,當然你一定會聽說過Matplotlib、Pyecharts、Seaborn、Plotly、Bokeh這五大工具,本文就將通過真實繪圖來深度評測這五個Python數據可視化的庫,看看到底這幾種工具各有什麼優缺點
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    這是對 pandas 數據幀進行探索性數據分析的一種簡單快速的方法。pandas df.describe()和 df.info()函數通常用作 EDA 過程的第一步。但是,它只提供了非常基本的數據概述,對於大型數據集沒有太大幫助。另一方面,pandas 分析函數使用 df.profile_report()擴展 pandas 數據幀,以便快速進行數據分析。
  • 太陽圖、平行坐標……5種動態、交互可視化讓數據講出更動聽的故事
    而很多時候,一張漂亮的可視化圖表就足以勝過千言萬語。本文將介紹 5 種基於 Plotly 的可視化方法,你會發現,原來可視化不僅可用直方圖和箱形圖,還能做得如此動態好看甚至可交互。對數據科學家來說,講故事是一個至關重要的技能。為了表達我們的思想並且說服別人,我們需要有效的溝通。而漂漂亮亮的可視化是完成這一任務的絕佳工具。
  • 手把手教你使用Python進行高級數據可視化
    數據可視化能力已經越來越成為各崗位的基礎技能。領英的數據報告顯示,數據可視化技能在2018年中國最熱門技能中排名第一。就數據分析而言,可視化探索幾乎是你正式進行數據分析的第一步,通過SQL拿到數據之後,我們需要使用可視化方法探索和發現數據中的模式規律。
  • 教程| pandas輕鬆入門 之 數據結構介紹 1
    訪問flyai.club,一鍵創建你的人工智慧項目Pandas含有使數據清洗和分析工作變得更快更簡單的數據結構和操作工具。pandas經常和其它工具一同使用,如數值計算工具NumPy和SciPy,分析庫statsmodels和scikit-learn,和數據可視化庫matplotlib。
  • 可視化介紹:NumPy和機器學習數據表示
    在最流行的三大數據處理棧R、Matlab和Python中,NumPy是最重要的組件之一,有很多Python系的數據處理系統都依賴NumPy作為其基礎架構的基礎部分,比如tensorflow、pandas、SciPy和scikit-learn等。NumPy極大地簡化了向量和矩陣的操作和處理。
  • 資料|利用Python進行數據分析
    from=leiphonecolumn_res0518以下內容節選自豆瓣:內容簡介 · · · · · ·【名人推薦】「科學計算和數據分析社區已經等待這本書很多年了:大量具體的實踐建議,以及大量綜合應用方法。本書在未來幾年裡肯定會成為Python領域中技術計算的權威指南。」
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。●pandas的安裝推薦使用anaconda,只要安裝了anaconda,它裡面就會自帶pandas,這會為我們省去很多的麻煩。接下來就是用pandas去處理數據,數據從哪來呢?