首頁 >後端開發 >Python教學 >學習Python資料視覺化的好例子分享!

學習Python資料視覺化的好例子分享!

WBOY
WBOY轉載
2023-04-25 23:04:05959瀏覽

學習Python資料視覺化的好例子分享!

大家好,我是J哥。 (文末送書)

利用視覺化探索圖表

一、資料視覺化與探索圖

 資料視覺化是指用圖形或表格的方式來呈現資料。圖表能夠清楚呈現資料性質, 以及資料間或屬性間的關係,可以輕易地讓人看圖釋義。使用者透過探索圖(Exploratory Graph)可以了解資料的特性、尋找資料的趨勢、降低資料的理解門檻。

二、常見的圖表實例

本章主要採用 Pandas 的方式來畫圖,而不是使用 Matplotlib 模組。其實 Pandas 已經把 Matplotlib 的畫圖方法整合到 DataFrame 中,因此在實際應用中,使用者不需要直接引用 Matplotlib 也可以完成畫圖的工作。

1.折線圖

 折線圖(line chart)是最基本的圖表,可以用來呈現不同欄位連續資料之間的關係。繪製折線圖使用的是 plot.line() 的方法,可以設定顏色、形狀等參數。在使用上,拆線圖繪製方法完全繼承了 Matplotlib 的用法,所以程式最後也必須呼叫 plt.show() 產生圖,如圖8.4 所示。

df_iris[['sepal length (cm)']].plot.line()
plt.show()
ax = df[['sepal length (cm)']].plot.line(color='green',title="Demo",style='--')
ax.set(xlabel="index", ylabel="length")
plt.show()

學習Python資料視覺化的好例子分享!

2.散佈圖

散佈圖(Scatter Chart)用於檢視不同欄位離散資料之間的關係。繪製散佈圖使用的是 df.plot.scatter(),如圖8.5所示。

df = df_iris
df.plot.scatter(x='sepal length (cm)', y='sepal width (cm)')
from matplotlib import cm
cmap = cm.get_cmap('Spectral')
df.plot.scatter(x='sepal length (cm)',
y='sepal width (cm)',
s=df[['petal length (cm)']]*20,
c=df['target'],
cmap=cmap,
title='different circle size by petal length (cm)')

學習Python資料視覺化的好例子分享!

3.直方圖、長條圖

直方圖(Histogram Chart)通常用於同一欄位,呈現連續資料的分佈狀況,與直方圖類似的另一種圖是長條圖(Bar Chart),用於檢視同一欄位,如圖8.6 所示。

df[['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)','petal width (cm)']].plot.hist()
2 df.target.value_counts().plot.bar()

學習Python資料視覺化的好例子分享!

4. 圓餅圖、箱形圖

圓餅圖(Pie Chart)可以用來檢視同一欄位各類別所佔的比例,而箱型圖(Box Chart)則用於檢視同一欄位或比較不同欄位資料的分佈差異,如圖8.7 所示。

df.target.value_counts().plot.pie(legend=True)
df.boxplot(column=['target'],figsize=(10,5))

學習Python資料視覺化的好例子分享!

資料探索實戰分享

本節利用兩個真實的資料集實際展示資料探索的幾種手法。

一、2013年美國社區調查

在美國社區調查(American Community Survey)中,每年約有350 萬個家庭被問到關於他們是誰及他們如何生活的詳細問題。調查的內容涵蓋了許多主題,包括祖先、教育、工作、交通、網路使用和居住。

資料來源:https://www.kaggle.com/census/2013-american-community-survey。

資料名稱:2013 American Community Survey。

先觀察資料的樣子與特性,以及每個欄位所代表的意義、種類和範圍。

# 读取数据
df = pd.read_csv("./ss13husa.csv")
# 栏位种类数量
df.shape
# (756065,231)
# 栏位数值范围
df.describe()

先將兩個ss13pusa.csv 串連起來,這份數據總共包含30 萬筆數據,3 個欄位:SCHL ( 學歷,School Level)、 PINCP ( 收入,Income) 和ESR (工作狀態,Work Status)。

pusa = pd.read_csv("ss13pusa.csv") pusb = pd.read_csv("ss13pusb.csv")
# 串接两份数据
col = ['SCHL','PINCP','ESR']
df['ac_survey'] = pd.concat([pusa[col],pusb[col],axis=0)

依據學歷將資料分群,觀察不同學歷的數量比例,接著計算他們的平均收入。

group = df['ac_survey'].groupby(by=['SCHL']) print('学历分布:' + group.size())
group = ac_survey.groupby(by=['SCHL']) print('平均收入:' +group.mean())

二、波士頓房屋資料集

 波士頓房屋資料集(Boston House Price Dataset)包含有關波士頓地區的房屋信息, 包 506 個資料樣本和 13 個特徵維度。

資料來源:https://archive.ics.uci.edu/ml/machine-learning-databases/housing/。

資料名稱:Boston House Price Dataset。

先觀察資料的樣子與特性,以及每個欄位所代表的意義、種類和範圍。

可以用直方圖的方式畫出房價(MEDV)的分佈,如圖 8.8 所示。

df = pd.read_csv("./housing.data")
# 栏位种类数量
df.shape
# (506, 14)
#栏位数值范围df.describe()
import matplotlib.pyplot as plt
df[['MEDV']].plot.hist()
plt.show()

學習Python資料視覺化的好例子分享!

附註:圖中英文對應筆者在程式碼或資料中指定的名字,實作中讀者可將它們替換成自己需要的文字。

接下來需要知道的是哪些維度與「房價」關係明顯。先用散佈圖的方式來觀察,如圖8.9所示。

# draw scatter chart
df.plot.scatter(x='MEDV', y='RM') .
plt.show()

學習Python資料視覺化的好例子分享!

#

最后,计算相关系数并用聚类热图(Heatmap)来进行视觉呈现,如图 8.10 所示。

# compute pearson correlation
corr = df.corr()
# drawheatmap
import seaborn as sns
corr = df.corr()
sns.heatmap(corr)
plt.show()

學習Python資料視覺化的好例子分享!

颜色为红色,表示正向关系;颜色为蓝色,表示负向关系;颜色为白色,表示没有关系。RM 与房价关联度偏向红色,为正向关系;LSTAT、PTRATIO 与房价关联度偏向深蓝, 为负向关系;CRIM、RAD、AGE 与房价关联度偏向白色,为没有关系。

声明:本文选自清华大学出版社的《深入浅出python数据分析》一书,略有修改,经出版社授权刊登于此。

以上是學習Python資料視覺化的好例子分享!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除