2026/4/6 13:30:42
网站建设
项目流程
文章目录一、系统演示二、项目介绍三、项目配套讲解四、项目部分代码讲解五、底部关注公众号获取完整项目和文档及ppt一、系统演示基于Python的电商数据分析二、项目介绍基于Python的电商数据分析 电商用户消费行为分析数据集处理功能要求数据读取数据清洗数据分析开发工具pycharm 使用的语言和技术栈python语言、pandas、matplotlib三、项目配套讲解四、项目部分代码讲解#!/usr/bin/env python# coding: utf-8# In[1]:importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfromdatetimeimportdatetime plt.rcParams[font.sans-serif][SimHei]#设置中文字体为黑体plt.rcParams[axes.unicode_minus]False#正常显示负号pd.set_option(display.float_format,lambdax:%.2f%x)#pandas禁用科学计数法#忽略警告importwarnings warnings.filterwarnings(ignore)# In[ ]:# 数据清洗# 1.查看数据基本信息# 2.字段介绍# 3.创建新列-日期、月份、小时、周几# 4.查看数据缺失、重复情况# 5.查看数据是否有异常# 6.保存清洗后的数据# In[ ]:# 1.查看数据基本信息# In[2]:datapd.read_csv(rF:\work\python\电子产品销售数据.csv,index_col0,dtype{category_id:int64,user_id:int64},encodingutf-8,sep,)# In[3]:data.head()# In[4]:# 数据框大小data.shape# In[13]:# 数据基本信息data.info()# In[ ]:# 2.字段介绍# Unnamed: 行号# event_time下单时间# order_id订单编号# product_id:产品标号# category_id :类别编号# category_code :类别# brand :品牌# price :价格# user_id :用户编号# age :年龄# sex :性别# local:省份# In[ ]:# 3.创建新列-日期、月份、小时、周几# In[ ]:# 创建日期列# In[6]:data[date]data.event_time.apply(lambdax:x.split( )[0])# In[7]:#转换为日期格式data[date]pd.to_datetime(data[date])# In[ ]:# 创建月份列# In[8]:data[month]data.date.dt.month# In[ ]:# 创建小时列# In[9]:data[hour]data.event_time.apply(lambdax:x.split( )[1].split(:)[0])# In[ ]:# 创建周几列---周日为0,周一为1# In[10]:data[weekday]data.date.apply(lambdax:x.strftime(%w))# In[ ]:# 删除event_time列# In[11]:deldata[event_time]# In[12]:data.head()# In[ ]:# 4.查看数据缺失、重复情况# In[ ]:# 4.1查看数据缺失并删除缺失值的数据# 4.2存在重复值,但是换个角度去想,这些重复值就是同笔订单下了多个数量的订单,所以不删除重复值,进而增加一列购买数量的列和总价的列# In[14]:data.shape# In[15]:data.info()# In[ ]:# 缺失数据有category_code-产品类别和brand-品牌这两列对于category_code用R来代替缺失值而不是选择删除缺失值的数据# brand这一列数据缺失比较少,直接删除缺失值# In[16]:data[category_code]data[category_code].fillna(R)# In[17]:#删除brand这一列有缺失值的数据datadata[data.brand.notnull()]# In[18]:data.info()# In[ ]:# 4.2存在重复值,但是换个角度去想,这些重复值就是同笔订单下了多个数量的订单,所以不删除重复值,进而增加一列购买数量的列和总价的列# In[19]:data.duplicated().sum()# In[20]:data.duplicated()# In[21]:#添加新的列:购买数量datadata.value_counts().reset_index().rename(columns{0:buy_cnt})#由于python版本问题,旧的版本没有上面的功能,所以要写以下3行代码# df data.groupby([order_id,product_id]).agg(buy_cnt(user_id,count))# data pd.merge(data,df,on[order_id,product_id],howinner)# data data.drop_duplicates().reset_index(dropTrue)# In[22]:#添加新的列:购买总金额data[amount]data[price]*data[buy_cnt]# In[ ]:# 5.查看数据是否有异常# In[ ]:# 5.1把几个id的格式转化为object格式# 5.2把hour和weekday转化为int# 5.3查看价格和年龄是否存在异常值# 5.4检查其他字段是否有异常值# 5.4.1发现date日期有异常值,显示为1970-01-01,把这些异常值删除# In[ ]:# 5.1把几个id的格式转化为object格式# In[23]:data.order_iddata.order_id.astype(object)data.product_iddata.product_id.astype(object)data.category_iddata.category_id.astype(object)data.user_iddata.user_id.astype(object)# In[ ]:# 5.2把hour和weekday转化为int# In[24]:data[hour]data.loc[:,hour].astype(int)data[weekday]data.loc[:,weekday].astype(int)# In[25]:data.info()# In[ ]:# 5.3查看价格和年龄是否存在异常值# In[26]:data.describe(percentiles[0.01,0.25,0.75,0.99]).T# In[ ]:# 以上7个字段均没有异常值# price和amount最小值为0这类商品应该就是免费类的商品所以也不属于异常值。# 应该进一步分析购买了0元商品的用户后续是否还有购买了其他的商品。# In[ ]:# 5.4检查其他字段是否有异常值# In[27]:data.describe(includeall).T# In[ ]:# 5.4.1发现date日期有异常值,显示为1970-01-01,把这些异常值删除# In[28]:datadata[data.date1970-01-01]# In[29]:data.date.min()# In[ ]:# 6.保存清洗后的数据# In[30]:data.head()# In[31]:data.shape# In[33]:# 重置索引data.reset_index(dropTrue,inplaceTrue)# In[32]:#保存清洗后的数据data.to_csv(F:\work\python\data_clean.csv,indexFalse)# In[ ]:五、底部关注公众号获取完整项目和文档及ppt有问题或者需要协助调试运行项目的也可联系