案例分析: 众包任务

“拍照赚钱”是移动互联网下的一种自助式服务模式。用户下载APP,注册成为APP会员,然后从APP上领取需要拍照的任务(比如上超市去检查某种商品的上架情况),赚取APP对任务所标定的酬金。这种基于移动互联网的自助式劳务众包平台,为企业提供各种商业检查和信息搜集,相比传统的市场调查方式可以大大节省调查成本,而且有效地保证了调查数据真实性,缩短了调查的周期。因此APP成为该平台运行的核心,而APP中的任务定价又是其核心要素。如果定价不合理,有的任务就会无人问津,而导致商品检查的失败。
附件一是一个已结束项目的任务数据,包含了每个任务的位置、定价和完成情况(“1”表示完成,“0”表示未完成);附件二是会员信息数据,包含了会员的位置、信誉值、参考其信誉给出的任务开始预订时间和预订限额,原则上会员信誉越高,越优先开始挑选任务,其配额也就越大(任务分配时实际上是根据预订限额所占比例进行配发)。附件一和附件二的表结构如表7-1和表7-2所示。

【实验步骤】

1.计算第0个任务到第1个任务、第0个任务到第0个会员之间的距离。

import pandas as pd    

import numpy as np     

import math           

A=pd.read_excel('附件一:已结束项目任务数据.xls')

B=pd.read_excel('附件二:会员信息数据.xlsx')

A_W0=A.iloc[0,1] 

A_J0=A.iloc[0,2] 

A_W1=A.iloc[1,1] 

A_J1=A.iloc[1,2]

B_WJ=B.iloc[0,1]

I=B_WJ.find(' ',0,len(B_WJ))

B_W0=float(B_WJ[0:I])        

B_J0=float(B_WJ[I:len(B_WJ)]) 

d1=111.19*math.sqrt((A_W0-A_W1)**2+(A_J0-A_J1)**2*math.cos((A_W0+A_W1)*math.pi/180)**2); 

d2=111.19*math.sqrt((A_W0-B_W0)**2+(A_J0-B_J0)**2*math.cos((A_W0+B_W0)*math.pi/180)**2);

print('d1= ',d1)

print('d2= ',d2)

执行结果如下:

d1=  13.71765563354376

d2=  48.41201229628393

2.小步进阶:第0个任务与所有任务、所有会员之间的距离。

import pandas as pd   

import numpy as np     

import math            

A=pd.read_excel('附件一:已结束项目任务数据.xls')

B=pd.read_excel('附件二:会员信息数据.xlsx')

A_W0=A.iloc[0,1] 

A_J0=A.iloc[0,2] 

D1=np.zeros((len(A)))

D2=np.zeros((len(B)))

for t in range(len(A)):

      A_Wt=A.iloc[t,1] 

      A_Jt=A.iloc[t,2] 

     dt=111.19*math.sqrt((A_W0-A_Wt)**2+(A_J0-A_Jt)**2*math.cos((A_W0+A_Wt)*math.pi/180)**2); 

     D1[t]=dt

    for k in range(len(B)):

            B_WJ=B.iloc[k,1]

            I=B_WJ.find(' ',0,len(B_WJ))

            B_Wk=float(B_WJ[0:I])       

            B_Jk=float(B_WJ[I:len(B_WJ)]) 

           dk=111.19*math.sqrt((A_W0-B_Wk)**2+(A_J0-B_Jk)**2*math.cos((A_W0+B_Wk)*math.pi/180)**2);

D2[k]=dk

3.初步落成:对第0个任务计算指标Z1、Z2、Z3、Z4、Z5。

import pandas as pd    

import numpy as np     

import math          

A=pd.read_excel('附件一:已结束项目任务数据.xls')

B=pd.read_excel('附件二:会员信息数据.xlsx')

A_W0=A.iloc[0,1] 

A_J0=A.iloc[0,2]

D1=np.zeros((len(A)))

D2=np.zeros((len(B)))

for t in range(len(A)):

        A_Wt=A.iloc[t,1] 

        A_Jt=A.iloc[t,2] 

       dt=111.19*math.sqrt((A_W0-A_Wt)**2+(A_J0-A_Jt)**2*math.cos((A_W0+A_Wt)*math.pi/180)**2); 

     D1[t]=dt

for k in range(len(B)):

         B_WJ=B.iloc[k,1]

         I=B_WJ.find(' ',0,len(B_WJ))

        B_Wk=float(B_WJ[0:I])          

       B_Jk=float(B_WJ[I:len(B_WJ)]) 

  dk=111.19*math.sqrt((A_W0-B_Wk)**2+(A_J0-B_Jk)**2*math.cos((A_W0+B_Wk)*math.pi/180)**2);

    D2[k]=dk

Z1=len(D1[D1<=5])

Z2=A.iloc[D1<=5,[3]].mean()[0]

Z3=len(D2[D2<=5])  

Z4=B.iloc[D2<=5,[2,4]].sum()[0]

Z5=B.iloc[D2<=5,[2,4]].sum()[1]/Z3

print('Z1= ',Z1)

print('Z2= ',Z2)

print('Z3= ',Z3)

print('Z4= ',Z4)

print('Z5= ',Z5)

你可能感兴趣的:(python,numpy,开发语言)