生产实习——Day13

超市电商数据分析(上)

数据源概况

数据集

提取发货日期字段(Ship Date字段)的年、月信息,并整理发货年、发货月的销售总额,分析发货成本,并预测进货成本

本案例将对某大型超市的零售数据进行数据分析,通过了
解运营状况,做出合理的决策。详细字段是:

  • 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:订单优先级;

读取、清洗数据

1.使用pandas的read_csv读取数据后,查看各列数据的空值情况,发现Postal Code字段(邮编字段)有空值,而且这一列不重要,所以首先删除掉Postal Code列;
2. 使用DataFrame对象的describe()方法,没有发现异常数据,所以,不必处理;
3.将Order Date订单日期字段的数据修改为datetime类型;
3. 为了后续分析方便,从订单日期中分别提取年、月、季度数据,并添加三个列用来存取年、月、季度信息,分别为:’Order-year’,’Order-month’,’quarter’。
代码及结果如下:

//导入必要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from pylab import mpl
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体为中文黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块的问题
//读取数据
data = pd.read_csv('market.csv',encoding='ISO-8859-1')
data.head()

在这里插入图片描述

data.info()

在这里插入图片描述

data.isnull().sum()

在这里插入图片描述

data.describe()

在这里插入图片描述

data.drop('Postal Code',axis=1,inplace=True)
data.describe()

在这里插入图片描述

import datetime
data['Order Date']

在这里插入图片描述

#pd.to_datetime(data['Order Date'], format='%d/%m/%Y',errors='coerce').fillna(pd.to_datetime(data['datetime'], format='%d-%m-%Y',errors='coerce')).isnull().sum()
temp = pd.to_datetime(data['Order Date'], format='%m/%d/%Y',errors='coerce').fillna(pd.to_datetime(data['Order Date'], format='%d-%m-%Y',errors='coerce'))
data['Order Date']  = temp.dt.date
data['Order Date']

在这里插入图片描述

data['Order-year'] = temp.dt.year
data['Order-month'] = temp.dt.month
data['Order-quarter'] = temp.dt.quarter

在这里插入图片描述

data[['Order-year','Order-month','Order-quarter']]

在这里插入图片描述

数据分析

利润分析

先根据年和月进行分组,再分别提取各年份(2011-2014年)的数据,分析各年份对应月的利润情况。
# 将 DataFrame 中的数据保存到 CSV 文件中
data.to_csv('market_cleaned.csv', index=False)
# 读取 CSV 文件
df = pd.read_csv('market_cleaned.csv')
# 根据年和月进行分组,分析每年的月利润情况
profit_analysis = df.groupby(['Order-year', 'Order-month'])['Profit'].sum().unstack()
# 2. 数据分析:利润分析
# 根据年和月进行分组,分析每年的月利润情况
profit_analysis = df.groupby(['Order-year', 'Order-month'])['Profit'].sum().unstack()

profit_analysis
# 设置图形大小
plt.figure(figsize=(12, 6))

# 绘制利润分析的热力图
sns.heatmap(profit_analysis, annot=True, fmt=".2f", cmap="YlGnBu")

# 设置标题和轴标签
plt.title('Monthly Profit Analysis (2011-2014)')
plt.xlabel('Month')
plt.ylabel('Year')

# 显示图形
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值