首先,我們使用的三個包分別為pandas,matplotlib.pyplot,seaborn,首先我們導(dǎo)入這三個包,代碼如下所示:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
我們用到的黑五數(shù)據(jù)表如下:
一:可視化年齡與購物金額的關(guān)系
我們想要知道年齡和購買金額是否有聯(lián)系,該如何可視化它們來供我們決策呢?
首先我們導(dǎo)入數(shù)據(jù),然后創(chuàng)建一個新表,等于以年齡分組購買金額的均值,之后X軸為購買金額,Y軸為年齡,顏色設(shè)置為購買金額越大,顏色越淺,此處圓圈大小設(shè)置為購買金額的1/4,其代碼如下所示:
frame = pd.read_csv(r'C:\Users\Administrator\Desktop\新建文件夾\BlackFriday.csv')
result = frame[['Purchase']].groupby(frame['Age']).mean()
plt.scatter(result['Purchase'],result.index,c=result['Purchase'],s=result['Purchase']*(1/4))
plt.colorbar()
plt.show()
得到可視化圖表,如下所示:

根據(jù)數(shù)據(jù)可視化散點(diǎn)圖,我們可以得知消費(fèi)者年齡在36到45之前,隨著年齡增長,購買金額會越來越大,但是到了46歲到50歲的時候,購買金額會大幅下降,到了51到55歲時候購物金額會大幅上漲,55歲之后會小幅下降
二:可視化當(dāng)?shù)鼐幼r長和購物金額的關(guān)系
我們想要知道當(dāng)?shù)鼐幼r長和購買金額是否有聯(lián)系,該如何可視化它們來供我們決策呢?
首先我們導(dǎo)入數(shù)據(jù),然后創(chuàng)建一個新表,等于以當(dāng)?shù)鼐幼r長分組購買金額的均值,之后X軸為購買金額,Y軸為當(dāng)?shù)鼐幼r長,顏色設(shè)置為購買金額越大,顏色越淺,此處圓圈大小設(shè)置為購買金額的1/4,其代碼如下所示:
frame = pd.read_csv(r'C:\Users\Administrator\Desktop\新建文件夾\BlackFriday.csv')
result = frame[['Purchase']].groupby(frame['Stay_In_Current_City_Years']).mean()
plt.scatter(result['Purchase'],result.index,c=result['Purchase'],s=result['Purchase']*(1/4))
plt.colorbar()
plt.show()

根據(jù)圖表可知,居住不到一年的顧客購買金額最少,而購買最多的是居住2年的用戶,其各自購買程度如圖所示:
三:可視化各種因素的相關(guān)性
我們該如何知道各種因素之間的關(guān)聯(lián)性如何呢?
這時候我們就需要熱力圖了,應(yīng)對無法進(jìn)行相關(guān)性分析的數(shù)據(jù)進(jìn)行修改,將其修改為可相關(guān)的數(shù)據(jù)類型,并對其進(jìn)行擬合,將其繪制成熱力圖來進(jìn)行展示,其代碼如下:
frame = pd.read_csv(r'C:\Users\Administrator\Desktop\新建文件夾\BlackFriday.csv')
pd.set_option('display.max_columns',None)
frame['Age'] = frame['Age'].apply(lambda x :x[0])
frame.loc[frame["Stay_In_Current_City_Years"]=='4+',"Stay_In_Current_City_Years"]=4
frame['Age'] = frame['Age'].astype(int)
frame["Stay_In_Current_City_Years"] = frame["Stay_In_Current_City_Years"].astype(int)
sns.heatmap(frame.corr())
plt.show()
可得到下圖:

其中白色的部分由于是自己和自己進(jìn)行相關(guān),所以最高為1,沒有參考價值,剩下的方格顏色越淺,證明其相關(guān)性越高,所以我們可以得知購買了1,2類產(chǎn)品的人購物額較低。
如果想要將數(shù)據(jù)格進(jìn)行分組,可以使用代碼:
sns.clustermap(frame.corr())
它可以將數(shù)據(jù)的相關(guān)性進(jìn)行歸類分層:

也可以通過sns.countplot()來計算不同屬性的數(shù)據(jù)的計數(shù),例如我們使用代碼:
sns.countplot(frame['Age'])
可以統(tǒng)計到不同年齡組的購物人數(shù),其圖如下:

本項目來自中國大學(xué)mooc:中國大學(xué)mooc:南京財經(jīng)大學(xué)Python大數(shù)據(jù)分析