利用pandas整理订单,并根据地址对比进行分类
背景:
本人主要做新媒体运营,因为公司近期转向团购,所以开始处理团购订单,主要是留下有用数据,并进行商品、地址分类,方便分拣货物和物流配送。
而其中最繁琐的工作,就是根据地址分类,我们主要进行社区团购,涵盖附近十几个小区,有自己的物流配送师傅,但要根据小区,将货物分到配送员手上。所以,需要我们导出订单后,根据用户填写地址,分别归属到每个小区之下。订单虽说不多,基本在一百单到两百单上下,要每个地址进行对比,费时费力,还容易出错。
本着重复的工作大多是可以自动实现的,加上自学了几天pathon,就想利用pandas进行自动整理。
目标很简单,首先导出订单,然后输入路径,接着就能自动整理出两个订单,一个原表单,以做备份,一个总表,包含收货人、电话、地址、商品名称、数量等,并添加两列数据:小区,和所属范围。获取每一行地址信息,进行比对,属于哪个小区,哪个范围,如果不在对比小区中,小区则标记为null,范围则为其它。
首先导入包,以及路径地址
import pandas as pd
import osfolder_path = r'/Users/joy/订单/'
excel_name = 'test'
excel_xlsx= '.xlsx'
从下载的原始订单(test.xlsx)中,将目标表单,写入新的Excel文件(test_new.xlsx)中以作为备份,并获取想要获取的列,分别存为Series,并存为一个数组,方便后续读取。
df_original_excel = pd.read_excel(folder_path + excel_name + excel_xlsx,'接龙列表(行排不合并)')
new_excel_name = r'test_new'
writer = pd.ExcelWriter(folder_path + new_excel_name + excel_xlsx)
df_original_excel.to_excel(writer,sheet_name = '原表',index = False)s_name = df_original_excel['收货人']
s_phone_num = df_original_excel['联系电话']
s_address = df_original_excel['收货地址']
s_goods = df_original_excel['商品名称']
s_num = df_original_excel['数量']
s_remarks = df_original_excel['用户备注']
s_price = df_original_excel['商品金额']
s_refund = df_original_excel['订单已退款']s_total = [s_name,s_phone_num,s_address,s_goods,s_num,s_remarks,s_price,s_refund]
新建一个DataFrame(df_s_table),并将数组(s_total)中的Series分别存入其中。然后新建两个地址范围(range_A,range_B),其中有我们预设好的小区(A1~A5,B1~B5),新建两个Series(community_s,range_s)数据,分别存放小区和范围。
df_s_table = pd.DataFrame()for s in s_total:df_s_table[s.name] = s#两个地址范围,range_A和rang_B,其中A下有5个小区,B下有5个小区。
range_A = ['A1','A2','A3','A4','A5']
range_B = ['B1','B2','B3','B4','B5']community_s = pd.Series(len(df_s_table['收货地址']))
range_s = pd.Series(len(df_s_table['收货地址']))
设置state,进行双重循环,遍历‘收货地址’中的所有数据,并和range_A和range_B中的小区进行一一比对,如果地址中包含某小区,就在将小区名存入community_s中,并将range_s存为该范围。如果均不符合,就将community_s存为null,range_s设置为‘其它’,最后,将community_s和range_s添加到df_s_table中。
# state代表地址所属范围,0为其它,1为range_A,2为range_B,默认为其它
state = 0for i in range(len(df_s_table['收货地址'])):for item in range_sanqi:if item in df_s_table['收货地址'][i]:community_s[i] = itemrange_s[i] = 'range_A'state = 1if state != 1:for item in range_ydy:if item in df_s_table['收货地址'][i]:community_s[i] = itemrange_s[i] = 'range_B'state = 2if state == 0:community_s[i] = 'null'range_s[i] = '其它'else:state = 0df_s_table['小区'] = community_s
df_s_table['范围'] = range_s
最后,分别根据“范围”、“小区”、“收货人”进行排序,并写入new_excel中,保存,这样就基本完成了。接下来只需要将null小区改过来就行了。
df_s_table = df_s_table.sort_values(['范围','小区','收货人'])df_s_table.to_excel(writer,sheet_name = '总表',index = False)writer.save()
writer.close()
这是根据自己的工作,做的一个小程序,很简单,但还算实用。初写python,肯定有不对的地方,大家可以一起交流。
利用pandas整理订单,并根据地址对比进行分类相关推荐
- Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同)
Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同) 目录 利用pandas对两列字段元素求差集(对比两列字段所有元素的异同) 输出结果 实现代码 利用pandas ...
- python计算csv文件内的数据_Python利用pandas计算多个CSV文件数据值的实例
功能:扫描当前目录下所有CSV文件并对其中文件进行统计,输出统计值到CSV文件 pip install pandas import pandas as pd import glob,os,sys in ...
- 利用Pandas拆分Excel的单元格为多行并保留其他行的数据
利用Pandas拆分Excel的单元格为多行并保留其他行的数据 1. 需求 2. Pandas解决需求 2.1 准备工作 2.2 Python程序执行 3. Pandas实现需求过程详解 3.1 碎碎 ...
- 阿里云AI训练营-数据分析入门:利用Pandas分析美国总统选举
1.1 前言 本次赛事由开源学习组织Datawhale主办,主要带领学习者利用Python进行数据分析以及数据可视化,包含数据集的处理.数据探索与清晰.数据分析.数据可视化四部分,利用pandas.m ...
- 利用Python整理TGA的导出数据,成为Excel格式的
''' TGA的导出数据是ANSI格式的, 利用Python整理TGA的导出数据,成为Excel格式的. '''''' 使用Python自带的open命令,打开file1文档 file1文档是ANSI ...
- 利用pandas读写HDF5文件
一.简介 HDF5(Hierarchical Data Formal)是用于存储大规模数值数据的较为理想的存储格式,文件后缀名为h5,存储读取速度非常快,且可在文件内部按照明确的层次存储数据,同一个H ...
- python在excel中的应用-Python利用pandas处理Excel数据的应用详解
最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而利用p ...
- python与excel的应用-Python利用pandas处理Excel数据的应用
最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而利用p ...
- Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略
Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略 目录 利用Pandas函数实现对表格文件的查之高级查询(类似sql) 1.分组查询
最新文章
- NuGet学习笔记(3) 搭建属于自己的NuGet服务器
- 当AI实现多任务学习,它究竟能做什么?
- android连接Mysql数据库之JDBC方式
- C++运行时候库操作概述和整个程序运行流程
- “打头办”不在百度,在民间
- gscatter in matlab Scatter plot by group machine learning and statics tool box required
- TensorFlow Serving + Docker + Tornado机器学习模型生产级快速部署
- Flink三种运行模式安装部署
- android 属性动画变大,Android PropertyAnimation 属性动画(一)初探
- 视图 索引 存储过程
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-3.Vidoe相关接口完善和规范协议...
- qwidget设置背景透明_手机上设置“小小科技半透明”主题背景,效果美翻天!...
- 手机安装 Linux 系统教程
- 水晶易表 Xcelsius 2008 安装指南 完美支持office2010
- 视频分辨率过高,导致部分手机播放失败
- 特征工程之数据预处理与可视化
- 机器学习-线性回归-身高体重关系预测
- 开学季·DGUT立Flag =W=
- Android 7.0配置fileprovider共享文件 解决FileUriExposedException
热门文章
- 会声会影2020Corel Video Studio注册机安装激活教程
- 项目技术指标(招标文件)
- CI 框架邮件发送功能,以163为例
- 【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 4 / 4
- android 健康分析,开题报告-基于Android的健康指标记录与分析软件的设计与实现.doc...
- 不会时间序列预测?不要紧,大神来教你
- java1.8安装_2020JDK1.8安装教程详解(一次就可安装成功)
- Office365跨订阅迁移邮箱-批量导入用户PST文件
- [原]利用ps制作金属纹理效果
- 常用正则表达式及学习