当前位置:   article > 正文

基于Python的电商数据分析_python电商数据分析项目

python电商数据分析项目

一、系统演示

基于Python的电商数据分析

二、项目介绍

基于Python的电商数据分析 电商用户消费行为分析数据集处理

功能要求:数据读取,数据清洗,数据分析

开发工具:pycharm 使用的语言和技术栈:python语言、pandas、matplotlib

在这里插入图片描述
在这里插入图片描述

三、项目配套讲解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、项目部分代码讲解

#!/usr/bin/env python
# coding: utf-8

# In[1]:


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime

plt.rcParams['font.sans-serif'] = ['SimHei']  #设置中文字体为黑体
plt.rcParams['axes.unicode_minus'] = False #正常显示负号

pd.set_option('display.float_format',lambda x : '%.2f' % x)#pandas禁用科学计数法

#忽略警告
import warnings
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(lambda x: 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(lambda x: x.split(' ')[1].split(':')[0])


# In[ ]:


# 创建周几列---周日为0,周一为1


# In[10]:


data['weekday'] = data.date.apply(lambda x:x.strftime("%w"))


# In[ ]:


# 删除event_time列


# In[11]:


del data['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[ ]:





  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388

五、底部获取完整项目和文档及ppt(9.9¥带走)

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/965893
推荐阅读
相关标签
  

闽ICP备14008679号