熱線電話:13121318867

登錄
首頁大數據時代使用python來繪制漂亮的圖表:pandas篇!
使用python來繪制漂亮的圖表:pandas篇!
2020-05-27
收藏
使用Python繪制數據,可以使用三種不同方式,它們分別是pandas,Seaborn和Plotly。 我們將通過利用《 2019年世界幸福報告》中的數據來做到這一點。我用Gapminder和Wikipedia的信息豐富了《世界幸福報告》數據,以便探索新的關系和可視化。在整篇文章中,我將使用Life Ladder作為目標變量。

我使用Python繪圖的歷史
大約兩年前,我開始更認真地學習Python。 從那以后,幾乎沒有一個星期不讓我驚嘆于Python本身,或生態系統中眾多令人驚嘆的開源庫的簡單性和易用性。 我熟悉的命令,模式和概念越多,那么所有事情就越有意義。
Matplotlib
使用Python進行繪圖的情況恰恰相反。 最初,我用Matplotlib創建的幾乎每個圖表都看起來像是八十年代逃脫的罪犯。 更糟糕的是,要創建這些可憎的東西,我通常不得不在Stackoverflow上花費數小時。 例如,研究nitty-gritty命令以更改x-ticks的傾斜度或類似的愚蠢行為。 甚至沒有讓我開始使用多張圖表。 結果看起來令人印象深刻,并且以編程方式創建這些圖表是一種奇妙的感覺。 例如,一次生成50個針對不同變量的圖表。 但是,這只是很多工作,需要您記住很多其他本來沒用的命令。
Seaborn
了解Seaborn是一種解脫。 Seaborn提取了許多微調。 毫無疑問,最終圖表的美學意義是一個巨大的飛躍。 但是,它也是基于Matplotlib構建的。 通常,對于非標準調整,仍然有必要深入了解機器級的matplotlib代碼。
Bokeh
簡要了解一下Bokeh,我以為Bokeh將成為我的首選解決方案。 當我從事地理空間可視化工作時遇到了Bokeh。 但是,我很快意識到,雖然Bokeh與眾不同,但它與matplotlib一樣復雜。
Plotly
我確實在一段時間前嘗試了plot.ly(從現在開始被稱為plotly)。 再一次,致力于地理空間數據的可視化。 那時,它似乎比前面提到的庫還要不靠譜。需要一個帳戶,必須通過筆記本電腦登錄,然后才能使所有內容在線呈現。 然后,還需要下載結果圖表。 我迅速放棄了。 但是,最近,我看了一個有關YouTube的視頻,該視頻關于plotly express和plotly 4.0,最重要的是,他們擺脫了所有這些在線限制。 我玩了一下,這篇文章就是它的結果。 我想遲到總比沒有好。
Kepler.gl(地理空間數據榮譽獎)
Kepler.gl雖然絕對不是Python庫,但它是一種用于地理空間數據的基于Web的強大可視化工具。 您只需要CSV文件,即可使用Python輕松創建。 試試看!
我目前的工作流程
最終,我決定使用Pandas原始繪圖進行快速檢查,并使用Seaborn生成要在報告和演示文稿中使用的圖表(視覺效果很重要)。

分布的重要性在圣地亞哥學習期間,我教過統計學(Stats 119)。 統計119是統計的入門課程。 該課程包括統計基礎,例如數據匯總(可視和定量),幾率和概率的概念,回歸,抽樣以及最重要的分布。 這次是我對數量和現象的理解幾乎全部轉變為基于分布表示(大部分時間是高斯)。
時至今日,我發現這兩個數量的平均含義令人吃驚,而標準偏差可以幫助您把握現象。 僅通過了解這兩個數字,就可以輕松得出特定結果的可能性。 人們立即知道大部分結果將在哪里。 它為您提供了一個參考框架,可以快速將軼事與有統計意義的事件區分開來,而無需進行過于復雜的計算。
一般而言,面對新數據時,我的第一步是嘗試可視化其分布,以更好地理解數據。

加載數據和導入庫讓我們加載本文中將要使用的數據。 我確實對數據進行了一些預處理。 我在有意義的地方進行數據填充處理。
# Load the data data = pd.read_csv('https://raw.githubusercontent.com/FBosler/AdvancedPlotting/master/combined_set.csv') # this assigns labels per year data['Mean Log GDP per capita'] = data.groupby('Year')['Log GDP per capita'].transform( pd.qcut, q=5, labels=(['Lowest','Low','Medium','High','Highest']) )數據集包含以下各列的值:
· Year 年:計量年(從2007年到2018年)
· Life Ladder 人生階梯:受訪者根據Cantril階梯,以0到10的等級(10最佳)衡量他們今天的生活價值
· Log GDP per capita 對數人均GDP:根據購買力平價(PPP)調整的人均GDP,根據世界銀行于2018年11月14日發布的世界發展指標(WDI)得出
· Social support 社會支持:對問題的回答:“如果遇到麻煩,您是否有親戚或朋友可以在需要時幫助您?”
· Healthy life expectancy at birth 出生時的健康預期壽命:出生時的預期壽命是根據世界衛生組織(WHO)全球衛生觀察站數據存儲庫中的數據構建的,其中提供了2005、2010、2015和2016年的數據。
· Freedom to make life choices 選擇生活的自由度:對問題的回答:“您對選擇自己的生活的自由感到滿意還是不滿意?”
· Generosity 慷慨度:與"人均GDP"相比,對"您在過去一個月向慈善機構捐款了嗎?"的回應
· Perceptions of corruption 對腐敗的看法:回答"腐敗是否在整個政府范圍內廣泛存在?“和"腐敗是否在企業內部廣泛分布?”
· Positive affect 積極影響:包括前一天的幸福,笑聲和享受的平均頻率。
· Negative affect 負面影響:包括前一天擔憂,悲傷和憤怒的平均頻率。
· Confidence in national government 對國家政府的信心:不言自明
· Democratic Quality 民主素質:一個國家的民主程度
· Delivery Quality 交付質量:一個國家兌現其政策的效果如何
· Gapminder Life Expectancy Gapminder預期壽命:Gapminder的預期壽命
· Gapminder Population Gapminder人口:一個國家的人口

快速:使用Pandas進行基本繪圖
Pandas具有內置的繪圖功能,可以在SeriesDataFrame上調用它。 我喜歡這些繪圖功能,因為它們簡潔,使用合理的默認值,并且可以快速了解發生的情況。
要創建繪圖,請對數據調用.plot(kind = ),如下所示:
np.exp(data[data['Year']==2018]['Log GDP per capita']).plot( kind='hist' )運行上面的命令將產生以下圖表。

2018: Histogram of the number of countries per GDP per Capita bucket. Not surprisingly, most countri
使用Pandas進行繪圖時,有五個主要參數:
· kind:Pandas必須知道您要創建哪種圖,以下選項可用hist,bar,barh,scatter,area,kde,line,box,hexbin,餅圖。
· figsize:允許覆蓋6英寸寬和4英寸高的默認輸出大小。 figsize需要一個元組(例如,我經常使用的figsize =(12,8))
· title:向圖表添加標題。 在大多數情況下,我用它來澄清圖表中顯示的內容,以便當我回到圖表上時,可以快速確定發生了什么。 title需要一個字符串。
· bins:允許覆蓋直方圖的bin寬度。 bins需要一個列表或類似列表的值序列(例如bins = np.arange(2,8,0.25))
· xlim / ylim:允許覆蓋軸的最大值和最小值的默認值。 xlim和ylim都期望有一個元組(例如xlim =(0,5))
讓我們快速瀏覽各種可用的plots類型。
垂直條形圖data[ data['Year'] == 2018 ].set_index('Country name')['Life Ladder'].nlargest(15).plot( kind='bar', figsize=(12,8) )
2018: List of 15 happiest countries is led by Finnland
水平條形圖np.exp(data[ data['Year'] == 2018 ].groupby('Continent')['Log GDP per capita'].mean()).sort_values().plot( kind='barh', figsize=(12,8) )!

Average GDP per capita by continent in 2011 USD Dollars clearly led by Australia and New Zealand
箱形圖data['Life Ladder'].plot( kind='box', figsize=(12,8) )
Box plot of the distribution of Life Ladder shows that the median is somewhere around 5.5 ranging fr
散點圖data[['Healthy life expectancy at birth','Gapminder Life Expectancy']].plot( kind='scatter', x='Healthy life expectancy at birth', y='Gapminder Life Expectancy', figsize=(12,8) )
Scatter plot of the World Happiness Report life expectation against the Gapminder life expectation s
六邊形圖data[data['Year'] == 2018].plot( kind='hexbin',   x='Healthy life expectancy at birth',   y='Generosity',   C='Life Ladder',   gridsize=20,   figsize=(12,8),    cmap="Blues", # defaults to greenish   sharex=False # required to get rid of a bug )
2018: Hexbin plot, plotting life expectancy against generosity. The color of bins indicates the aver
餅圖data[data['Year'] == 2018]  .groupby( ['Continent'])['Gapminder Population']   .sum()   .plot(     kind='pie',     figsize=(12,8),     cmap="Blues_r", # defaults to orangish   )
2018: Pie chart showing the total population by continent
堆積面積圖data.groupby( ['Year','Continent'])['Gapminder Population'] .sum() .unstack() .plot(     kind='area',     figsize=(12,8),     cmap="Blues", # defaults to orangish )
Population numbers accross the globe are on the rise.
折線圖data[ data['Country name'] == 'Germany'] .set_index('Year')['Life Ladder'] .plot( kind='line', figsize=(12,8) )
Line chart depicting the development of happiness in Germany.
關于Pandas繪圖的結論用Pandas繪圖很方便。 它易于訪問,而且速度很快。 Plot很難看。 偏離默認值是不可能的,這是可以的,因為我們還有其他工具可以使圖表更具美學吸引力。 去看看seaborn吧。

本文翻譯自Fabian Bosler的文章《Learn how to create beautiful and insightful charts with Python — the Quick, the Pretty, and the Awesome》 參考https://towardsdatascience.com/plotting-with-python-c2561b8c0f1f)

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢