最后一个项目——超市电商数据分析
数据源概况:
- 本案例将对某大型超市的零售数据进行数据分析,通过了
解运营状况,做出合理的决策。详细字段是:
Row ID:行编号;
Order ID:订单ID;
Order Date:订单日期;
Ship Date:发货日期;
Ship Mode:发货模式;
Customer ID:客户ID;
Customer Name:客户姓名;
Segment:客户类别;
City:客户所在城市;
State:客户城市所在州;
Country:客户所在国家;
Postal Code:邮编;
Market:商店所属区域;
Region:商店所属州;
Product ID:产品ID;
Category:产品类别;
Sub-Category:产品子类别;
Product Name:产品名称;
Sales:销售额;
Quantity:销售量;
Discount:折扣;
Profit:利润;
Shipping Cost:发货成本;
Order Priority:订单优先级;
分析各个地区分店的销售额
##二、利润分析——分析各年份对应月的利润情况
#整体销售情况子数据集,选取下单日期、销售额、销量、利润、年份、月份信息等列
sales_data = df[['Order_Date','Sales','Quantity','Profit','year','month']]
#按照年份、月份对销售子数据集进行分组求和
sales_year = sales_data.groupby(['year','month']).sum()
#选取该年的所有月的所有行和列
year_2011 = sales_year.loc[(2011,slice(None)),:].reset_index()
year_2012 = sales_year.loc[(2012,slice(None)),:].reset_index()
year_2013 = sales_year.loc[(2013,slice(None)),:].reset_index()
year_2014 = sales_year.loc[(2014,slice(None)),:].reset_index()
#销售额分析(4年按列合并到一个数据框中)
sales=pd.concat([year_2011['Sales'],year_2012['Sales'],
year_2013['Sales'],year_2014['Sales']],axis=1)
# 对行名和列名进行重命名
sales.columns=['Sales-2011','Sales-2012','Sales-2013','Sales-2014']
sales.index=['Jau','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
# 颜色越深,销售额越高(pandas的样式功能)
sales.style.background_gradient()
客单价分析
#三、客单价分析
#创建一个空字典来存储每年的客单价
year_unit_price = {}
#循环遍历年份
for i in range(2011, 2015):
data = df[df['year'] == i]
price = data[['Order_Date', 'Customer_ID', 'Sales']]
#删除重复数据((避免同一顾客同一天多次购买被重复计数,去除Order_Date和Customer_ID相同的行。)
price_dr = price.drop_duplicates(subset=['Order_Date', 'Customer_ID'])
#计算成交顾客数(总消费次数)
total_num = price_dr.shape[0]
#客单价=销售额÷成交顾客数
unit_price = price['Sales'].sum() / total_num
year_unit_price[i] = unit_price
print('{}年总消费次数='.format(i), total_num)
print('{}年客单价='.format(i), unit_price, '\n')
#展示每年的客单价数据
# 使用matplotlib绘制柱状图展示每年的客单价
plt.figure(figsize=(10, 6))
plt.bar(year_unit_price.keys(), year_unit_price.values(), color='skyblue')
plt.xlabel('Year')
plt.ylabel('客单价')
plt.title('每年客单价分布')
plt.xticks(range(2011, 2015))
plt.show()
销量分析与销售淡旺季分析
quantity = pd.concat([year_2011['Quantity'],year_2012['Quantity'],
year_2013['Quantity'],year_2014['Quantity']],axis=1)
# 对行名和列名进行重命名
quantity.columns=['Quantity-2011','Quantity-2012','Quantity-2013','Quantity-2014']
quantity.index=['Jau','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
# 颜色越深,销量越高
quantity.style.background_gradient()
#销量分析与销售淡旺季分析
# 绘制折线图
plt.figure(figsize=(10, 6)) # 可以设置图形的大小
for column in quantity.columns:
quantity[column].plot(label=column) # 绘制每一列的折线图,并设置图例标签
# 添加图例
plt.legend()
# 显示图表
plt.show()