python黑色星期五_Python数据分析:亚马逊黑色星期五

本文使用Python对黑色星期五的销售数据进行分析,探讨了不同性别、年龄、婚姻状况和城市对消费的影响。研究发现,男性、26-35岁的未婚人群以及C城的市民在购物活动中占据了主导地位。通过对数据清洗、处理缺失值和可视化分析,揭示了消费者行为的有趣模式。
摘要由CSDN通过智能技术生成

数据源:https://www.kaggle.com/mehdidag/black-friday​www.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.comzhihu-card-default.svg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值