#导入必要的库 import warnings #忽略警告 warnings.filterwarnings('ignore') import datetime #时间处理库 import pandas as pd #数据处理库 import numpy as np #数值计算库 import matplotlib.pyplot as plt #数据可视化库 import re #正则表达式库 import os #操作系统库

#数据探索 #1 获取所有文件的名称和路径 data_path = './data/' #数据存储路径 data_names = os.listdir(data_path) #列举出data_path里面所有的文件名称 data = pd.DataFrame([]) #初始化一个空的DataFrame for data_name in data_names: # 删除不是csv文件的文件 if data_name.endswith('.csv'): print((data_name)) #3 循环读取文件 tmp =pd.read_csv(os.path.join(data_path,data_name),encoding='gbk') #读取csv文件 #4 文件存储 data = pd.concat([data,tmp]) #将读取的数据合并到data里面 data.head() #查看前五行数据 data.info() #查看数据总览 data.columns #查看数据的列名

#查看缺失情况 data.isnull().sum() #查看每列缺失值的数量 ind = data['收款方'].isnull() #收款方缺失的行索引 data.loc[ind,:] #查看收款方缺失的数据 ind = data['出货状态'].isnull() #出货状态缺失的行索引 data.loc[ind,:] #查看出货状态缺失的数据 ind = data['商品详情'].apply(lambda x:'嗨购中奖' in x) #商品详情中包含'嗨购中奖'的行索引 data.loc[ind,:] #查看商品详情中包含'嗨购中奖'的数据

1.3 设备编号

data ['设备编号'].value_counts() #值统计

ind = data['设备编号'] == 112866 #设备编号为112866的行索引 data.loc[ind,'省市区'].value_counts() #查看设备编号为112866的省市区信息

1.4 订单编号

data['订单编号'].value_counts() #查看订单编号,发现全部是唯一的

1.5 支付状态

num = data['支付状态'].value_counts() #支付状态的数量统计 plt.rcParams['font.sans-serif'] = 'SimHei' #字体设置,不然显示不了中文图片中 plt.pie(num, autopct='%.2f%%', labels=num.index) #绘制饼图 plt.title('支付方式占比情况') #图表标题 plt.show() #显示图表

1.7 收款方

data['收款方'].value_counts() #收款方的数量统计 ind = data['收款方'] =='售货机自收' #收款方为'售货机自收'的行索引 data.loc[ind, :] #查看收款方为'售货机自收'的数据

1.8省市区

data['省市区'].value_counts() #省市区的数量统计

2 数据预处理

2.1 下单时间修改为时间格式的数据

data['下单时间'] =pd.to_datetime(data['下单时间'],errors='coerce') #将下单时间转换为datetime类型

2.2 出货状态只保留"出货正常"的数据

ind = data['出货状态'] =='出货成功' #出货状态为'出货成功'的行索引 data2 =data.loc[ind,:] #将出货状态为'出货成功'的数据赋值给data2

2.3 提取城市信息

data2['city'] = data2['省市区'].apply((lambda x: re.findall('.{2}市',x)[0])) #通过正则表达式提取城市信息 data2['city'].value_counts() #查看提取出来的城市信息的数量统计

2.3 提取城市信息

data2['city'] = data2['省市区'].apply((lambda x: re.findall('.{2}市',x)[0])) #通过正则表达式提取城市信息 data2['city'].value_counts() #查看提取出来的城市信息的数量统计

2.4商品名称更新

data2['商品详情'] = data2['商品详情'].str.replace('百事可以', '百事可乐') #将'百事可以'替换为'百事可乐' data2['商品详情'] = data2['商品详情'].str.replace('苿莉花茶', '茉莉花茶') #将'苿莉花茶'替换为'茉莉花茶' data2['商品详情'] = data2['商品详情'].str.replace('茶TT', '茶π') #将'茶TT'替换为'茶π' data2['商品详情'] = data2['商品详情'].str.replace('nl', '') #将'nl'替换为空 data2['商品详情'] = data2['商品详情'].str.replace('毫升', '') #将'毫升'替换为空 data2['商品详情'] = data2['商品详情'].str.replace('乐事薯片', '乐事') #将'乐事薯片'替换为'乐事' data2['商品详情'] = data2['商品详情'].apply(lambda x: re.sub('([^;,xX]+)?|[罐瓶盒]装?|', '', x)) #将括号和罐瓶盒替换为空 data2['商品详情'] = data2['商品详情'].str.replace('马蒂爽', '马蹄爽') #将'马蒂爽'替换为'马蹄爽' data2['商品详情'] = data2['商品详情'].str.replace('鲜蘑豆奶', '鲜磨豆奶') #将'鲜蘑豆奶'替换为'鲜磨豆奶' data2['商品详情'] = data2['商品详情'].apply(lambda x: re.sub('广氏菠萝啤|廣式菠萝啤|菠萝啤酒', '菠萝啤', x)) #将菠萝啤酒的不同写法替换为'菠萝啤' data2['商品详情'] = data2['商品详情'].str.replace('威化瓶干', '威化饼干') #将'威化瓶干'替换为'威化饼干' data2['商品详情'] = data2['商品详情'].str.replace('康师父', '康师傅') #将'康师父'替换为'康师傅' data2['商品详情'] = data2['商品详情'].str.replace('张三疯', '张三丰') #将'张三疯'替换为'张三丰' data2['商品详情'] = data2['商品详情'].str.replace('蓝莓味', '蓝莓') #将'蓝莓味'替换为'蓝莓' data2['商品详情'] = data2['商品详情'].str.replace('西柚味', '西柚') #将'西柚味'替换为'西柚' data2['商品详情'] = data2['商品详情'].str.replace('柠檬味', '柠檬') #将'柠檬味'替换为'柠檬' data2['商品详情'] = data2['商品详情'].apply(lambda x: re.sub('水蜜桃[^;,xX]+', '蜜桃', x)) #将水蜜桃替换为蜜桃 data2['商品详情'] = data2['商品详情'].apply(lambda x: re.sub('青柠[^;,xX]+', '青柠', x)) #将青柠替换为青柠 data2['商品详情'] = data2['商品详情'].str.upper() #将商品名称全部转换为大写 data2['商品详情'] = data2['商品详情'].str.replace('ML', '') #将'ML'替换为空

2.5 提取商品名称及数量

t = data2['商品详情'].apply(lambda x: re.findall('([^,;xX]+) ?Xx', x)) #通过正则表达式提取商品名称和数量 from tkinter import _flatten goods = t.apply(lambda x: list(_flatten(x))[::2]) #将商品名称提取出来 numbers = t.apply(lambda x: list(_flatten(x))[1::2]) #将商品数量提取出来 goods_data = pd.DataFrame({'goods': goods, 'numbers': numbers}) #将商品名称和数量合并成一个DataFrame goods_data.head() #查看前五行数

给以下代码写注释import warningswarningsfilterwarningsignoreimport datetimeimport pandas as pdimport numpy as npimport matplotlibpyplot as pltimport reimport os#数据探索#1 获取所有文件的名称和路径data_path = data #数据存储路径dat

原文地址: https://www.cveoy.top/t/topic/eKpn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录