sns.set(palette="muted", color_codes=True) # seaborn样式
# 配置
plt.rcParams['axes.unicode_minus'] = False # 解决无法显示符号的问题
sns.set(font='SimHei', font_scale=0.8) # 解决Seaborn中文显示问题
# 绘图
plt.figure(1, figsize=(13, 6))
n = 0
for x in ['Age', 'Annual Income', 'Spending Score']:
n += 1
plt.subplot(1, 3, n)
plt.subplots_adjust(hspace=0.5, wspace=0.5)
sns.distplot(df[x], bins=16, kde=True) # kde 密度曲线
plt.title('{}分布情况'.format(x))
plt.tight_layout()
plt.show()
如下图。从左到右分别是年龄、年收入和消费能力的分布情况。发现:
年龄方面:[30,36]范围的客户是最多的另外,在[20,21]也不少,但是60岁以上的老年人是最不常来消费的。
年收入方面:大部分的客户集中在[53,83]范围里,在15以下和105以上的很少。
消费分数方面:消费分数在[40,55]的占了大多数,在[70,80]范围的次之。
2.3年龄/年收入/消费分数的柱状图
这里使用的是柱状图,和直方图不同的是:xxx轴上的每一个刻度对应的是一个离散点,而不是一个区间。
plt.figure(1, figsize=(13, 6))
k = 0
for x in ['Age', 'Annual Income', 'Spending Score']:
k += 1
plt.subplot(3, 1, k)
plt.subplots_adjust(hspace=0.5, wspace=0.5)
sns.countplot(df[x], palette='rainbow', alpha=0.8)
plt.title('{}分布情况'.format(x))
plt.tight_layout()
plt.show()
如下图。从上到下分别是年龄、年收入和消费能力的柱状图。发现:
年龄方面:[27,40]范围的客户居多。其中,32岁的客户是商城的常客,55,、56、64、69岁的用户却很少。总的来说,年龄较大的人群较少,年龄较少的人群较多。
年收入方面:年收入在54和78的频数是最多的。其他在各个收入的客户频数看起来相差不太大。
消费分数方面:消费分数在42的客户数是最多的,56次之。有的客户的分数甚至达到了99,而分数为1的客户也存在,没有分数为0的客户。
2.4不同性别用户占比
df_gender_c = df['Gender'].value_counts()
p_lables = ['Female', 'Male']
p_color = ['lightcoral', 'lightskyblue']
p_explode = [0, 0.05]
# 绘图
plt.pie(df_gender_c, labels=p_lables, colors=p_color, explode=p_explode, shadow=True, autopct='%.2f%%')
plt.axis('off')
plt.legend()
plt.show()
如下饼图。女性以56%的份额居于领先地位,而男性则占整体的44%。特别是当男性人口相对高于女性时,这是一个比较大的差距。