- 业务场景:
公司A为了推广自家产品,增加订单量,招聘了大量的地推人员,规定地推人员需到终端门店去拜访,介绍产品特性,以自己的三寸不烂之舌,让店家心潮澎湃,并现场下单。然而,现实是残酷的,仅仅通过一次拜访店主就下单的情形相当之少。那有什么办法呢?公司A规定,地推人员必须经常去拜访,和店家建立好关系,相信总有一天店家会被地推人员的热情所感动,同时为了激励地推人员,只要去拜访,即使没能成功下单,也能获得补贴,按次计算。
地推人员小a灵机一动,想到可以不去现场拜访,虚假填报一些拜访记录,就能混到补贴了。然后,道高一尺,魔高一丈,公司A推出了一款定位打卡APP,规定拜访时必须打卡,APP会自动定位打卡位置。
- 审计场景:
既然APP会自动定位打卡位置,那么是否可以通过比对地推人员的打卡位置与终端门店的位置,判断地推人员是否在真实的位置打卡呢?
- 可行性分析:
终端门店位置信息分析:查看数据可以发现,终端门店的位置信息表示为:XXX省XXX市XXX县XXX路XXX号;
地推打卡记录信息分析:查看数据可以发现,打卡记录信息表示为:经纬度;
那么问题来了,如何将两种不同类型的数据进行对比呢?考虑是否可以将终端门店位置信息转换为经纬度后,再与打卡记录进行比较呢?
通过查询发现,高德地图提供了API,可以将地理位置地址转换为经纬度,貌似可行。
那么问题又来了,终端门店经纬度与打卡经纬度相差多少才算正常呢?那要测试一下咯,于是小编用手机,在不同地方记录经纬度,总结了如下规律:
考虑到高德地图定位精度,那就选择小数点后三位的经纬度差异进行比较;
- 实现方式(利用Python进行数据分析):
步骤一:将终端客户的地理地址转换为经纬度坐标
import requests
import pandas as pd
import openpyxl
import re
import numpy as np
def Modifysyntax(path):
customeraddress = pd.read_excel(path)
for i in range(len(customeraddress)):
if customeraddress.loc[i, '地址'] is not None:
s = str(customeraddress.loc[i, '地址'])
customeraddress.loc[i, '新地址'] = re.sub('[|/,()#]', '', s) # 将客户地址中的[|/,()#]'去掉
else:
continue
customeraddress.to_excel(path,