概述
数据源:https://www.kaggle.com/mehdidag/black-fridaywww.kaggle.com
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib as mlp
import matplotlib.pyplot as plt
import os
print(os.listdir("../input"))
# 直接在Kaggle写的,直接搬下来
# 读取数据
df = pd.read_csv('../input/BlackFriday.csv')
# 查看简要信息
df.info()
df.shape
# 观察数据形状
df.describe()
# 着重可关注销售额的数据分布
由上可见,共有12列,共3种数据类型
df.head(5)
# 可见,在product_category_2和product_category_3存在NaN值
1. 提出问题
在黑色星期五,是什么类型的人会花更多钱 ?
* 男性、女性 ?
* 年龄
* 是否已婚
2. 数据清洗
1) 空值处理
# 确认哪列是空值
df.isna().any()
在Product_Category_2和Product_Category_3存在空值,可以先看看这两列分别有什么值,直接用.unique() 函数更清晰。
print('Product_Category_2',df['Product_Category_2'].unique())
print('Product_Category_3',df['Product_Category_3'].unique())
# 获知两列的值都是浮点数float,为保留原数据的意思,用 '0' 代替空值NaN
df.fillna(value=0,inplace=True)
#由上数据我们可以看到,虽然类目2,3的源数据都是浮点数显示,但是数值实际是整数,我们可以用整数来代替。
df['Product_Category_2'] = df['Product_Category_2'].astype(int)
df['Product_Category_3'] = df['Product_Category_3'].astype(int)
#通过替代后,输出结果
print('Product_Category_2',df['Product_Category_2'].unique())
print('Product_Category_3',df['Product_Category_3'].unique())
2) 移除无用列
df.drop(columns = ["User_ID","Product_ID"],inplace=True)
df.info()
#移除后,我们可以重新再看看数据 'User_ID' 'Product_ID'
3. 数据可视化分析
1) 男性和女性
从以下的图标来看,似乎男性是这次黑色星期五的“主力军”。
sns.countplot(df['Gender'])
2) 年龄层
容易看到,年龄在26-35岁的,贡献出最多的销售额,其实估计也容易推测,这个年龄段的消费者, 他们存在未婚或没有小孩需要照顾的,私人时间更多,并且很多人已经在职场有一段时间,工作技能娴熟,稳定,收入自然也更可观。
sns.countplot(df['Age'])
# 实际上还可以这样表示:df.Age ,但为了减少出错,这样的表述方式更好 []
3.1) 性别和年龄层
另外,我们可以进一步分析在黑色星期五购物时不同年龄段的性别之间的关系。
sns.countplot(df['Age'],hue=df['Gender'])
3.2) 性别/婚姻状况 和 年龄层
我们可以通过更近一部分析,占据消费力主导的男性中,在不同的年龄层里面,有多少是已婚的。以实现以上需求,我们可以通过新建一列‘conbined_G_M’ ,该列是把 "性别“ 和“婚姻状况” 结合在一起,如 ‘F_0'
df['combined_G_M']=df.apply(lambda x:'%s_%s' % (x['Gender'],x['Marital_Status']),axis=1)
print(df['combined_G_M'].unique())
sns.countplot(df['Age'],hue=df['combined_G_M'])
3.3) 已婚和未婚的销售额占比分析
fig, ax = plt.subplots(figsize=(7,7))
# 设置统计图框架
plt.pie(df.groupby('Marital_Status')['Purchase'].sum(),labels=('Married','Unmarried'),autopct='%1.1f%%')
综上图我们可以看出,已婚市场的潜力要稍比未婚市场的潜力大;0-17岁之前没有存在已婚的人士,这点结合伦理来看,数据在这方面表现正常;除了55岁+的以外,所有年龄层未婚男性的花费都比已婚男性的消费力高,而女性则除了在46岁+以外,其他任何时候的未婚女性都比已婚女性的购买能力强。
4) Age and City
① 以计算各城市的销售数量占比
A城的市民在“黑五”中购买了最多的商品
fig, ax = plt.subplots(figsize=(7,7))
plt.pie(df['City_Category'].value_counts(), labels=df['City_Category'].unique(),autopct='%1.1f%%')
② 以计算各城市的销售金额占比
C城的市民为“黑五”贡献的销售额最多
fig, ax = plt.subplots(figsize=(7,7))
plt.pie(df.groupby('City_Category')['Purchase'].sum(), labels = df['City_Category'].unique(),autopct='%1.1f%%')
④ 最后,看城市分布与年龄的关系分析
易见,在各个城市中,依然是26-35岁作为消费主力
fig, ax = plt.subplots(figsize=(12,7))
sns.countplot(df['City_Category'],hue=df['Age'])
最后
关于本章的python数据分析知识点归纳在这里,有兴趣的朋友可以看看。慷先森:Python数据分析黑色星期五-知识点整理zhuanlan.zhihu.com
最后
以上就是搞怪电灯胆为你收集整理的python黑色星期五_Python数据分析:亚马逊黑色星期五的全部内容,希望文章能够帮你解决python黑色星期五_Python数据分析:亚马逊黑色星期五所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复