↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

Datawhale干货

作者:阿水,北航计算机硕士,Datawhale成员

DCIC2020

本文将以DCIC2020赛道二《巡游车与网约车运营特征对比》为具体内容,讲解赛题介绍、赛题理解、赛题任务解析、赛题数据介绍和赛题指标计算。

比赛地址:

https://data.xm.gov.cn/opendata-competition/#/contest_explain

本文会给出赛题二直接可以提交的代码思路,全文阅读需要10分钟。

赛题介绍

赛题名称:A城市巡游车与网约车运营特征对比分析

赛题说明:出租车作为城市客运交通系统的重要组成部分,以高效、便捷、灵活等优点深受居民青睐。出租车每天的运营中会产生大量的上下车点位相关信息,对这些数据进行科学合理的关联和挖掘,对比在工作日以及休息日、节假日的出租车数据的空间分布及其动态变化,对出租车候车泊位、管理调度和居民通勤特征的研究具有重要意义。

  • 出租车/网约车:上下车地点挖掘;

  • 出租车/网约车:不同日期的空间变化;

  • 出租车/网约车:泊车和调度问题;

赛题任务:参赛者需依据赛事方提供的出租车(包括巡游车和网约车)GPS和订单数据

  • 统计分析方法分别对所提供的巡游车和网约车运营的时间、空间分布特征进行量化计算,包括:

    • 计算2年的每年工作日取日平均,非工作日取日平均和节假日取日平均,三种类型各自平均的时变分布变化,三种时间类型按网格划分的平均空间分布(网格划分颗粒度选手自选);

    • 并分别对比分析所提供的网约车、巡游车,计算2年每年按工作日取日平均,非工作日取日平均和节假日取日平均三种类型的日均空驶率、订单平均运距、订单平均运行时长、上下客点分布密度等时变特性;

  • 根据巡游车和网约车的时空运营特征,并尝试对巡游车与网约车的融合发展提出相关建议。在分析过程,参赛者必须用到但不局限于提供的数据,可自行加入自有数据进行参赛,但需说明自带数据来源并保证数据合法合规使用;

赛题思路

通过赛题理解&数据分析,参赛选手需要回答上述问题:

  • 每年工作日取日平均,非工作日取日平均和节假日取日平均,三种情况下出租车&网约车:

    • 运营时间规律:出车时间和运行时间;

    • 空间分布规律:城市分布规律,订单分布规律;

    • 日均空驶率:空驶里程(没有载客)在车辆总运行里程中所占的比例;

    • 订单平均运距:订单平均距离计算;

    • 订单平均运行时长:订单平时时长计算;

    • 上下客点分布密度:上下车位置分布;

  • 对出租车&网约车的调度、融合发展提出建议:

    • 如何进行订单调度?识别打不到车的位置;

    • 如何进行停车场推荐?

    • 订单差异性分析?

赛题数据

比赛数据说明(点击阅读原文即可直达):

https://data.xm.gov.cn/opendata-competition/#/contest_explain

赛题数据基本可以分为四类:

  • 巡游车GPS数据(2019年、2020年);

  • 巡游车订单数据(2019年、2020年);

  • 网约车GPS数据(2019年、2020年);

  • 网约车订单数据(2019年、2020年);

数据字段说明如下:

赛题任务

城市巡游车与网约车运营特征对比分析赛题,提供 2019.05.31-2019.06.09 和2020.06.18-2020.06.27 两年共计 20 天的 A 城市网约车和巡游车的 GPS 数据、订 单数据,以及 A 城市路网矢量数据,上亿条数据。

我们可以很简单计算得出运行结果:

  • 计算巡游车日均空驶率、运距和运行时长;

  • 计算网约车日均空驶率、运距和运行时长;

import pandas as pd
import numpy as np
import glob# 网约车计算
def cal_wyc(df):df = df[['DEST_TIME', 'DEP_TIME', 'WAIT_MILE', 'DRIVE_MILE']].dropna()if df['DEST_TIME'].dtype != np.int64:df = df[df['DEST_TIME'].apply(len) == 14]df = df[df['DEST_TIME'].apply(lambda x: x.isdigit())]df['DEP_TIME'] = pd.to_datetime(df['DEP_TIME'], format='%Y%m%d%H%M%S')df['DEST_TIME'] = pd.to_datetime(df['DEST_TIME'], format='%Y%m%d%H%M%S')df = df[df['DRIVE_MILE'].apply(lambda x: '-' not in str(x) and '|' not in str(x) and '路' not in str(x))]df['DRIVE_MILE'] = df['DRIVE_MILE'].astype(float)df['WAIT_MILE'] = df['WAIT_MILE'].astype(float)# return dfprint('空驶率:', (df['WAIT_MILE'] / (df['WAIT_MILE'] + df['DRIVE_MILE'] + 0.01)).mean())print('订单平均距离:', df['DRIVE_MILE'].dropna().mean())print('订单平均时长:', ((df['DEST_TIME'] - df['DEP_TIME']).dt.seconds / 60.0).mean())# 巡游车计算
def cal_taxi(df):df['GETON_DATE'] = pd.to_datetime(df['GETON_DATE'])df['GETOFF_DATE'] = pd.to_datetime(df['GETOFF_DATE'])print('空驶率:', (df['NOPASS_MILE'] / (df['NOPASS_MILE'] + df['PASS_MILE'])).mean())print('订单平均距离:', df['PASS_MILE'].mean())print('订单平均时长:', ((df['GETOFF_DATE'] - df['GETON_DATE']).dt.seconds / 60.0).mean())

2019年端午节数据:

INPUT_PATH = '../input/'
df = taxiorder2019 = pd.concat([pd.read_csv(INPUT_PATH + x) for x in ['taxiOrder20190607.csv','taxiOrder20190608.csv','taxiOrder20190609.csv']
])
cal_taxi(df)INPUT_PATH = '../input/'
df = taxiorder2019 = pd.concat([pd.read_csv(INPUT_PATH + x) for x in ['wycOrder20190607.csv','wycOrder20190608.csv','wycOrder20190609.csv']
])
cal_wyc(df)
出租车
空驶率:0.2997949500443629
订单平均距离:6.501010225346955
订单平均时长:13.055927380570695
网约车
空驶率:0.056048033587246776
订单平均距离:9.065422897306478
订单平均时长:111.21042580624874
2019年工作日数据:
INPUT_PATH = '../input/'df = taxiorder2019 = pd.concat([    pd.read_csv(INPUT_PATH + x) for x in [        'taxiOrder20190531.csv',        'taxiOrder20190603.csv',        'taxiOrder20190604.csv',        'taxiOrder20190605.csv',        'taxiOrder20190606.csv'    ]])cal_taxi(df)INPUT_PATH = '../input/'df = taxiorder2019 = pd.concat([    pd.read_csv(INPUT_PATH + x) for x in [        'wycOrder20190531.csv',        'wycOrder20190603.csv',        'wycOrder20190604.csv',        'wycOrder20190605.csv',        'wycOrder20190606.csv'    ]])cal_wyc(df)
出租车
空驶率:0.28597477408680505
订单平均距离:6.463312988754979
订单平均时长:13.897280639095992
网约车
空驶率:0.0451398589440301
订单平均距离:8.678716893803035
订单平均时长:113.340031284820452019年周末数据:
INPUT_PATH = '../input/'
df = taxiorder2019 = pd.concat([pd.read_csv(INPUT_PATH + x) for x in ['taxiOrder20190601.csv','taxiOrder20190602.csv',]
])
cal_taxi(df)df = taxiorder2019 = pd.concat([pd.read_csv(INPUT_PATH + x) for x in ['wycOrder20190601.csv','wycOrder20190602.csv',]
])
cal_wyc(df)
出租车空驶率:0.2871319581401905
订单平均距离:6.289113628823901
订单平均时长:13.1542066691464
巡游车空驶率:0.049881413163707276
订单平均距离:8.514400548965787
订单平均时长:113.50896480737183

需要注意2020年数据与上面计算逻辑相同,只需要修改下具体的文件名就可以完成计算。是不是很简单????

结果提交

算法运行结果要固定输出到 sftp 的/result 目录下,结果文件为taxi_result.txt,格式为 utf-8。比赛平台最终会去取这个结果文件算出结果, 如果提交结果为非 taxi_result.txt 文件命名,或没有提交到/result 目录下,则不会 有分数产生。算法运行结果文件内容中,每个字段间以英文半角竖线 “|” 符 分隔。

评分注意事项如下:

1、赛题算法模型得分占总得分 30%,即满分 30 分。

2、答案给出的将是区间值,在区间内则得分,不在区间内则不得分,选手 提交的答案分别各给出 2 年(2019、2020)*3 类时期(正常工作日,正常周 六日、端午节假日)*2 种运营方式(网约车、巡游出租车)*三个指标 (daily_unloaded_rate、order_load_distance、order_load_time),共 36 个结果值。

3、参赛队伍提交的算法分析结果文件,平台每隔 2 小时评分一次,如果参赛队 伍提交的算法结果文件在同一个周期内多次提交,则以最后一次提交的文件参与 评分。最终算法分取参赛队伍历史分数最高的一次。算法模型分析结果集每日最 多提交3次。

4、选手可登录

https://data.xm.gov.cn/opendata-competition/index.html#/

具体查看 每次算法得分结果及历史提交明细。

点击「阅读原文」实践

总结:DCIC算法分析赛完整方案分享!相关推荐

  1. 2020数字中国创新大赛-智能算法赛-冠军方案分享

    写在前面的话 大家好,我是 Champion Chasing Boy 的 DOTA,在队友 鱼遇雨欲语与余. 尘沙杰少.林有夕.嗯哼哼唧 的Carry下,最终在本届智能算法赛拿到了复赛总榜单Top1的 ...

  2. 2023 全球人工智能开发者先锋大会—AI 人才学习赛rank1方案分享

    简介 笔者thefan,目前为一所双非学校的大三在读本科生,对数据挖掘以及计算机视觉感兴趣,曾获得过讯飞房屋租金预测竞赛的top2,本次主要分享为2023 全球人工智能开发者先锋大会-AI 人才学习赛 ...

  3. TIANCHI-全球城市计算挑战赛-完整方案及关键代码分享(季军)

    TIANCHI-全球城市计算挑战赛--参赛者将根据主办方提供的地铁人流相关数据,挖掘隐藏在背后的出行规律,准确预测各个地铁站点未来流量的变化.主办方希望通过这次挑战赛,用大数据和人工智能等技术助力未来 ...

  4. 零基础入门NLP - 新闻文本分类,正式赛第一名方案分享

    零基础入门NLP - 新闻文本分类,正式赛第一名方案分享:https://mp.weixin.qq.com/s/7WpZUqdlItBToLYuRLm44g

  5. 2020数字中国创新大赛-智能算法赛-冠军方案

    写在前面的话 大家好,我是 Champion Chasing Boy 的 DOTA,在队友 鱼遇雨欲语与余. 尘沙杰少.林有夕.嗯哼哼唧 的Carry下,最终在本届智能算法赛拿到了复赛总榜单Top1的 ...

  6. DigSci科学数据挖掘大赛-亚军方案分享

    写在前面的话 本文将基于在中国计算机大会方案宣讲PPT中的内容,给出此次比赛的完整方案,主要从赛题理解.建模核心思路.算法核心思想等角度阐述,同时对相关细节进行了适当的拓展讲解.涉及SIF Sente ...

  7. cmos全局曝光算法_2019腾讯广告算法大赛方案分享(冠军)

    来自公众号:机器学习初学者 本文提供2019年腾讯广告算法大赛冠军的代码分享. 俞士纶(Philip S. Yu)教授的评价"冠军队伍已经在有意无意使用"广度学习"的方法 ...

  8. 2019腾讯广告算法大赛方案分享(冠军)

    写在前面 队伍介绍:哈尔滨工业大学二年级硕士生刘育源.中山大学微软亚洲研究院联合培养博士生郭达雅和京东算法工程师王贺. 本文将给出冠军完整方案,全文内容架构将依托于答辩PPT,具体细节也会结合代码进行 ...

  9. ICCV 2021 口罩人物身份鉴别全球挑战赛冠军方案分享

    作者丨阿里云多媒体 AI 团队 编辑丨极市平台 导读 今年阿里云多媒体 AI 团队参加了 MFR 口罩人物身份鉴别全球挑战赛,并在总共5个赛道中,一举拿下1个冠军.1个亚军和2个季军.本文为该团队的冠 ...

最新文章

  1. web个人主页制作代码_关于嵌入式web服务器
  2. java 获取资源,Java资源获取
  3. 如何删除wordpress侧边栏功能的wordpress.org链接
  4. 复旦高等代数 II(17级)每周一题
  5. php swoole 游戏框架,Swoole 高性能php框架
  6. MySql视图view的使用:创建、修改、删除
  7. node.js的初步见解
  8. Linux学习笔记1 - Linux系统简介
  9. Java 正则表达式匹配规则
  10. 华为手机助手(PC)无法连接的通用解决方案
  11. 【C#】利用读卡器对IC卡进行读写、加密等操作,源码下载
  12. Windows XP中手动安装驱动程序的方法
  13. vue导出excel加一个进度条_vue项目中如何把数据导出成excel文件
  14. Unity后处理效果之边角压暗
  15. 签到java小程序代码_微信小程序全栈项目:签到打卡小程序 + 后端实现
  16. linux下如何配置svn,Linux下SVN安装与配置详解
  17. 获取多达 16GB 的 Dropbox 免费空间!
  18. 【物联网】如何在物联网平台开发
  19. tl wdr5620虚拟服务器,TP-Link TL-WDR5620无线桥接怎么设置?
  20. 计算机操作系统学习笔记 第二章、进程与线程

热门文章

  1. EasyRTMP手机直播推送rtmp流flash无法正常播放问题
  2. 朴素贝叶斯算法的python实现
  3. IPMSM弱磁控制策略
  4. 编译型语言和解释型语言(转载)
  5. objectdatasource中delete的尴尬。
  6. Matlab数据的可视化 -- 饼图
  7. 8位图像的双边滤波器实现
  8. 【ACM】杭电OJ 1013
  9. 证明实对称正定矩阵A的Gauss-Seidel法必定收敛(完整过程)
  10. ​谷歌大神 Jeff Dean 领衔,万字展望5大 AI 趋势