首先,我们使用的三个包分别为pandas,matplotlib.pyplot,seaborn,首先我们导入这三个包,代码如下所示:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
我们用到的黑五数据表如下:
一:可视化年龄与购物金额的关系
我们想要知道年龄和购买金额是否有联系,该如何可视化它们来供我们决策呢?
首先我们导入数据,然后创建一个新表,等于以年龄分组购买金额的均值,之后X轴为购买金额,Y轴为年龄,颜色设置为购买金额越大,颜色越浅,此处圆圈大小设置为购买金额的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()
得到可视化图表,如下所示:
根据数据可视化散点图,我们可以得知消费者年龄在36到45之前,随着年龄增长,购买金额会越来越大,但是到了46岁到50岁的时候,购买金额会大幅下降,到了51到55岁时候购物金额会大幅上涨,55岁之后会小幅下降
二:可视化当地居住时长和购物金额的关系
我们想要知道当地居住时长和购买金额是否有联系,该如何可视化它们来供我们决策呢?
首先我们导入数据,然后创建一个新表,等于以当地居住时长分组购买金额的均值,之后X轴为购买金额,Y轴为当地居住时长,颜色设置为购买金额越大,颜色越浅,此处圆圈大小设置为购买金额的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()
根据图表可知,居住不到一年的顾客购买金额最少,而购买最多的是居住2年的用户,其各自购买程度如图所示:
三:可视化各种因素的相关性
我们该如何知道各种因素之间的关联性如何呢?
这时候我们就需要热力图了,应对无法进行相关性分析的数据进行修改,将其修改为可相关的数据类型,并对其进行拟合,将其绘制成热力图来进行展示,其代码如下:
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()
可得到下图:
其中白色的部分由于是自己和自己进行相关,所以最高为1,没有参考价值,剩下的方格颜色越浅,证明其相关性越高,所以我们可以得知购买了1,2类产品的人购物额较低。
如果想要将数据格进行分组,可以使用代码:
sns.clustermap(frame.corr())
它可以将数据的相关性进行归类分层:
也可以通过sns.countplot()来计算不同属性的数据的计数,例如我们使用代码:
sns.countplot(frame['Age'])
可以统计到不同年龄组的购物人数,其图如下:
本项目来自中国大学mooc:中国大学mooc:南京财经大学Python大数据分析