时间:2023-03-16 00:58:01 | 来源:电子商务
时间:2023-03-16 00:58:01 来源:电子商务
我是一个从事商业地产5年的“中青年”每天起床都会对各种数据做思维上研究,最近广东的天气可是活了那么多年的我遇到最冷冬天,最冷的办公室,我忍不住上了某宝平台上买了“小太阳”结果还跟同事拼起了单,嘻~同时也想着最近几年电商的发展可谓迅猛,因此我拿了一些电商平台某产品品类的数据来进行分析。本次文章主要是记录本人对数据分析--电商行业所要掌握的基础工具python的运用与思维框架,无商业用途。(附上我在冬天的状态)import pandas as pddata = pd.read_csv('C:/Users/Desktop/dataset.csv',encoding='ISO-8859-1')data
data[data.Sales<0]
# 1.发货日期与订单日期,转成datetime形式data['ShipDate'] = pd.to_datetime(data['ShipDate'])data['OrderDate'] = pd.to_datetime(data['OrderDate'])# 2.发货日期减去订单日期,秒数data['interval']=(data.ShipDate-data.OrderDate).dt.total_seconds()data[data.interval<0]
发现了四条存在发货日期早于下单日期的不正常数据# 3.删除异常数据# drop(index=删除数据的index,inplace)data.drop(index=data[data.interval<0].index,inplace=True)data# 4.发货时间-下单时间data['interval'] = data.ShipDate-data.OrderDatedata
# 查看行列数量data.shape# 查看各列的非空数据量data.count()# NAN统计data.isna().sum()# 描述整体数据data.describe()# 数据信息data.info()
由此可以发现ShipMode存在字符串缺失值,PostalCode存在缺失值,先放着稍后做处理# 清洗RowID# 助理重复的个数data.RowID.unique().sizedata[data.RowID.duplicated()]# data.drop(index=data[data.RowID.duplicated()].index,inplace=True)# data
发现有三个RowID重复的值,打开excel数据表格进行核对data.drop(index=data[data.RowID.duplicated()].index,inplace=True)data
②处理Shipmode缺失值# 处理Shipmode空值# 对付字符串的空值,弥补,众数data[data.ShipMode.isnull()]
总共发现了11条因Shipmode存在空值的数据,由于在数据表中Shipmode是以字符串的形式存在的data.ShipMode.mode()data['ShipMode'].fillna(value=data.ShipMode.mode()[0],inplace=True)data# 检查是否补完data[data.ShipMode.isnull()]
当显示“0rows”,表示已经填补完Shipmode里的空值# 邮编数据处理data.drop(columns=['PostalCode'],inplace=True)data
④异常值处理,Discount数据处理data[data.Discount>1]data[data.Discount<0]
发现Discount中存在折扣>1的情况,而且有13条数据中的折扣存在这种情况,那么我们就要开始修正异常值数据,代码如下:把折扣大于1的数据,进行修正data['Discount'] = data['Discount'].mask(data['Discount']>1,None)# 查看空值data[data.Discount.isnull()]# 平均折扣meanDisount = round(data[data['Discount'].notnull()].Discount.sum()/data[data['Discount'].notnull()].Discount.size,2)meanDisountdata['Discount'].fillna(value = meanDisount,inplace=True)data
在这里,我们先将折扣>1的数值进行空值替换,然后计算数据表中全部Discount的平均值,利用平均值对相应空值进行填补,搞掂~~data[data.RowID.duplicated()]
ok~~搞掂~到了这一步,已经把全部数据清洗完毕,接下来就可以开展分析工作了!~# 拆分成年,季度,月份data['Order-year'] = data['OrderDate'].dt.yeardata['Order-month'] = data['OrderDate'].dt.monthdata['quarter'] = data['OrderDate'].dt.to_period('Q')res=data[['OrderDate','Order-year','Order-month','quarter']].head()res
1、每年销售额增长情况sales_rate_12 = sales_year[2012]/sales_year[2011]-1sales_rate_13 = sales_year[2013]/sales_year[2012]-1sales_rate_14 = sales_year[2014]/sales_year[2013]-1sales_rate_12_label = "%.2f%%" % (sales_rate_12*100)sales_rate_13_label = "%.2f%%" % (sales_rate_13*100)sales_rate_14_label = "%.2f%%" % (sales_rate_14*100)print(sales_rate_12_label,sales_rate_13_label,sales_rate_14_label)
③将sales_year、sales_rate、sales_rate_label形成dataframesales_rate = pd.DataFrame( {'sales_all':sales_year, 'sales_rate':[0,sales_rate_12,sales_rate_13,sales_rate_14], 'sales_rate_label':['0.00%',sales_rate_12_label,sales_rate_13_label,sales_rate_14_label]})sales_rate
④绘制成图形展现import matplotlib.pyplot as pltimport matplotlib as mpl# 设置字体mpl.rcParams['font.sans-serif'] = 'SimHei'# 设置风格plt.style.use('ggplot')# 销售额y1 = sales_rate['sales_all'] # 增长率y2 = sales_rate['sales_rate']x = [str(value) for value in sales_rate.index.tolist()]# 新建figure对象fig = plt.figure()# 新建子图1fig,ax1 = plt.subplots(figsize=(20,12))# ax2与ax1共享x轴ax2 = ax1.twinx()ax1.bar(x,y1,color = 'blue')ax2.plot(x,y2,marker = '*',color = 'r')ax1.set_xlabel('年份')ax1.set_ylabel('销售额')ax2.set_ylabel('增长率')ax1.set_title('销售额与增长率')plt.savefig('电商销售额与增长率.png')plt.show()
2、总销售占比sales_area = data.groupby('Market')['Sales'].sum()sales_area.plot(kind='pie',autopct="%1.1f%%",title='总销售占比')plt.savefig('总销售占比.png')plt.show()
3、各地区每一年的销售额sales_area = data.groupby(['Market','Order-year'])['Sales'].sum()sales_area
# 将分组后的多层索引设置成列数据sales_area = sales_area.reset_index(level=[0,1])sales_area
# 使用数据透视表重新整理数据sales_area = pd.pivot_table(sales_area, index='Market', columns='Order-year', values='Sales')sales_area
# # 绘制图形sales_area.plot(kind = 'bar',title = '2011年-2014年不同地区销售额对比')plt.savefig('2011年-2014年不同地区销售额对比.png')plt.show()
4、不同类型产品在不同地区销售额对比category_sales_area = data.groupby(['Market','Category'])['Sales'].sum()category_sales_areacategory_sales_area = category_sales_area.reset_index(level=[0,1])category_sales_areacategory_sales_area = pd.pivot_table(category_sales_area, index='Market', columns='Category', values='Sales')category_sales_area.plot(kind = 'bar',title = '不同类型产品在不同地区销售额对比',figsize=(10,8))plt.savefig('不同类型产品在不同地区销售额对比.png')plt.show()
5、销售淡旺季分析# 销售淡旺季分析year_month = data.groupby(['Order-year','Order-month'])['Sales'].sum()year_month# 将分组后的多层索引设置成列数据year_month = year_month.reset_index(level=[0,1])year_month# 使用数据透视表重新整理数据year_month = pd.pivot_table(year_month, index='Order-month', columns='Order-year', values='Sales')# 绘制图形year_month.plot(title='销售淡旺季分析')plt.savefig('销售淡旺季分析.png')plt.show()
6、新增客户# 1.复制data_customer = data.copy()# 2.处理数据data_customer = data_customer.drop_duplicates(subset = ['CustomerID'])data_customer
在代码撰写上,我利用了drop_duplicates(subset = ['CustomerID'])来对customerID进行去重,得到输出结果如下:# 3.分组new_customer = data_customer.groupby(by=['Order-year','Order-month']).size()new_customer# 将分组后的多层索引设置成列数据new_customer = new_customer.reset_index(level=[0,1])new_customer
# 使用数据透视表重新整理数据new_customer = pd.pivot_table(new_customer, index='Order-month', columns='Order-year', values=0,fill_value=0)new_customernew_customer.plot(kind = 'bar',title = '新增客户',figsize=(10,8))plt.savefig('新增客户.png')plt.show()
好啦~到了这里我对电商数据的分析步骤差不多尾声了,其实在这庞大的数量里面还有很多可以挖掘的价值点,但在这里就分享一些操作的方式以及代码的运用,在此,也做个总结方便小伙伴们在做数据分析能够灵活运用。①sales_year = round(data.groupby('Order-year')['Sales'].sum(),2)sales_year#round(主值,2)这里的“2”表示主值得出的数值小数点保留2位#groupby('')['']为分析测算数值的聚合形式②year_month = pd.pivot_table(year_month, index='Order-month', columns='Order-year', values='Sales')# 使用数据透视表重新整理数据 # 透视表与excel一致# # data,数据# # index,索引# # columns,列# # values,单元数据# # fill_value 补空数据③data_customer = data_customer.drop_duplicates(subset = ['CustomerID'])#去重数据
下一篇会重点向大家分享RFM模型的python语法,【PS:由于数据是进行了脱敏处理的,所以存在多少商业价值取决于你关注哪个方面,再次重申:本文主要说明分析方法以及一些代码展示,请勿利用于商业】最后也希望各位正往数据分析师发展的小伙伴们一路共勉,有空聊聊~
关键词:数据,分析,商行