当前位置: 首页 > news >正文

基于Python的电商数据分析

文章目录

    • 一、系统演示
    • 二、项目介绍
    • 三、项目配套讲解
    • 四、项目部分代码讲解
    • 五、底部关注公众号获取完整项目和文档及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]:data=pd.read_csv(r"F:\work\python\电子产品销售数据.csv",index_col=0,dtype={'category_id':'int64','user_id':'int64'},encoding='utf-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这一列有缺失值的数据data=data[data.brand.notnull()]# In[18]:data.info()# In[ ]:# 4.2存在重复值,但是换个角度去想,这些重复值就是同笔订单下了多个数量的订单,所以不删除重复值,进而增加一列购买数量的列和总价的列# In[19]:data.duplicated().sum()# In[20]:data.duplicated()# In[21]:#添加新的列:购买数量data=data.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'],how='inner')# data = data.drop_duplicates().reset_index(drop=True)# 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_id=data.order_id.astype('object')data.product_id=data.product_id.astype('object')data.category_id=data.category_id.astype('object')data.user_id=data.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(include='all').T# In[ ]:# 5.4.1发现date日期有异常值,显示为1970-01-01,把这些异常值删除# In[28]:data=data[data.date>'1970-01-01']# In[29]:data.date.min()# In[ ]:# 6.保存清洗后的数据# In[30]:data.head()# In[31]:data.shape# In[33]:# 重置索引data.reset_index(drop=True,inplace=True)# In[32]:#保存清洗后的数据data.to_csv('F:\work\python\data_clean.csv',index=False)# In[ ]:

五、底部关注公众号获取完整项目和文档及ppt

有问题,或者需要协助调试运行项目的也可联系

http://www.jsqmd.com/news/597030/

相关文章:

  • STM32内存管理实战:如何避免局部变量数组导致的栈溢出问题?
  • 别再死记硬背LFSR了!用Verilog手搓一个伽罗瓦型伪随机数发生器(附完整代码与仿真)
  • Thor CLI框架终极指南:如何构建自文档化命令行工具的完整教程
  • 东莞楼梯上楼神器专业厂家口碑排名,前十名有哪些 - mypinpai
  • 2026船用电缆口碑排行,泰祥电缆费用合理吗? - 工业品网
  • Emacs Plus 系统架构解析:从公式到 Cask 的实现原理
  • TinyColor终极指南:现代JavaScript颜色操作与ES模块最佳实践
  • 深入解析RK817 PMIC在Linux下的POWER键中断处理机制:从DTS配置到驱动实现
  • 释放生产力:用快马AI将效率超级技能想法一键转化为代码
  • MySQL数据库备份实战:全量、增量、差异备份到底怎么选?
  • 分析酒店餐饮烘焙行业广东境外参展推荐公司,哪家口碑好 - 工业设备
  • 3个核心优势解决B站硬核会员答题痛点:智能工具让100题挑战不再难
  • 共话2026年排屑机链轮,滨州地区信誉好的厂家怎么选择 - myqiye
  • 共话美达地板贴,价格贵不贵,脱胶情况及家庭适用性 - 工业推荐榜
  • 如何快速掌握赛马娘DMM版汉化与优化:面向新手的完整实践指南
  • 面试官问我哈希冲突怎么办?我答了二次探测,他让我手写查找过程...
  • 从“能用”到“精准”:Halcon相机内参标定后的参数验证与实战应用指南
  • 视觉小说翻译终极解决方案:LunaTranslator技术详解与实战指南
  • GPT-6,曝光了
  • 讲讲座椅电梯认证厂家,深圳地区好用的品牌有哪些 - 工业设备
  • 2026年滨州地区排屑机链轮排名,靠谱品牌推荐有哪些? - mypinpai
  • 应对复杂实战场景:基于快马平台生成动态网页爬虫完整解决方案
  • COMET:神经网络驱动的翻译质量评估框架详解
  • 可直接编译运行 c#解析dxf可读取圆直线弧多段线源码-无封装缩放拖拽 可读取坐标信息 支持多...
  • KEIL5实战:从零搭建华大HC32F460工程框架与避坑指南
  • 法律ai开发总结
  • 如何让Windows无缝运行安卓应用?这款效率工具让跨系统工作流效率提升300%
  • 为什么你需要学习正则表达式:learn-regex-zh 新手入门指南
  • PlatformIO+Arduino下ESP32 ULP协处理器集成指南
  • 2026年飞书食堂管理软件年度排名,推荐无锡特达斯靠谱之选 - 工业推荐榜