這節課就開始可視化數據的內容啦!
為了不贅述,我把入門和細節需要注意的內容兩篇文章貼到這里,大家可以通過這個鏈接通道到相關文章借助學習。
文科生學Python系列13: matplotlib繪圖/條形圖
文科生學Python系列14: matplotlib繪圖/seaborn
里面包括有每次繪圖之前需要導入到數據包有什么。幾種不同類型的可視化數據在什么情況下使用。
這里給大家簡單列一下基本的命令行,具體的執行可以前往閱讀:
連續變量 - 直方圖:plt.hist(data)
連續變量 - 方圖:plt.boxplot(data)
離散變量 - 條形圖:plt.bar(x,y)
離散變量 - 餅圖:plt.pie(data)
兩個變量 - 散點圖:plt.scatter(x,y)
多變量 - 矩陣圖:pandas.scatter_matrix(df)
下面我們來看看兩篇鏈接文章中沒有提及的部分——數據圖表的定制
前面的圖表繪制只畫出了圖表的基本形狀,并沒有對細節進行繪制。以下用泡泡圖的形式
這幅圖表達的是各個國家人口收入和健康水平的關系,橫坐標是人均GDP(人均收入水平),縱坐標是人口平均壽命(健康程度),其中的泡泡代表國家,泡泡的大小代表了國家人口數量的多少,泡泡的顏色代表所在大洲的不同(如紅色代表亞洲國家,藍色代表非洲國家,綠色的是美洲,黃色的是歐洲)
泡泡分布在從左下角到右上角的斜線上,代表了人口壽命和人口收入呈正相關關系。在右下角和左上角的地方幾乎是空白的,代表收入水平比較高的區域,人口壽命比較長;而在收入水平比較低的區域,人口的壽命一般都不會太長(65歲以下)。而在發展中國家中,壽命差距比較大,比如在印度平均壽命在65歲,中國的則是七八十歲,主要還是在發展中國家中人均收入水平差距較大,兩極分化比較大。
那我們開始數據圖表的繪制吧!
老師在繪制過程中首先是用了最初的兩個語句:
plt.scatter (df.gdp, df.life)
plt.show ()
大家可以先在自己的運行行中輸入,看看得出的是什么,然后就能大概明白上圖中間添加的那些參數在圖表顯示中都形成了什么效果。
這個過程中要是只添加
plt.title('各國健康和經濟水平關系')
這段漢字,在我們的軟件中漢字是顯示不全的。為了達到效果,沒有亂碼,我們在這一命令行前面加上
plt.rcParams['font.sans-serif']=['SimHei']
這一句,表示設置成黑體。運行后的結果就是,全部字都能正常顯示啦!
然后后面兩句設置橫坐標和縱坐標的顯示,分別是這份數據想要分析這兩者之間的關系參數。
而其實上圖得出的散點主要集中分布在0附近,也就是絕大多數的數據在小數值之內。所以需要把橫坐標的間隔調整一下:
plt.xscale('log')
創建數值的列表來存放之前的數值,也就是
tick_value=[1000,10000,100000]
創建對應的字符串列表,也就是
tick_label=['1k','10k','100k']
然后使用曾經使用過的
plt.xticks(tick_value,tick)label)
做一個對應即可。調整后運行:
接下來是要將散點圖設置成泡泡圖,所以要設置每個點的大小。泡泡的大小和國家人口數相對應,此時就需要重新定義size,為了避免人口數非常大,這里做一個縮小的比例。
size=df.popu/1e6*2
然后再散點圖的命令行后面加上s=size,s代表設置的大小:
plt.scatter(df.gdp, df.life,s=size)
這個時候可以運行命令行,發現圖形的界限并不明顯。所以加下來為了更好地區分,這里將每個大洲繪制不同的顏色,這里會建一個大洲和顏色對應的字典命令:
map_dict={'Asia':'red'}
其他顏色自行補充~
然后需要用map的方法將顏色和各大洲對應起來:
colors=df.continent.map(map_dict)
colors.head()
再把原語句中加上顏色的命令行:
plt.scatter (df.gdp, df.life,s=size,c=colors)
然后運行試試看,效果怎么樣吧!
接下來就是優化的步驟了
用plt.text來添加文字,后接坐標軸的位置,然后接文字的名稱
plt.text(1350,73,‘India’)
后面自行添加其他國家吧!將會在圖表上顯示文字。
要是需要添加網格的話,加一句
plt.grid(Ture)
下圖就是我們這節課提及到的代碼內容啦!
大家一定要多練習喲!
我們這節課最后一部分的內容是余老師講作業的內容,涉及到美國大選哦!感興趣的同學可以回到課堂聽聽這部分的精彩內容!