2019泰迪杯C题案例分析-python大数据自动化数据挖掘

article/2025/10/30 14:48:39

第七届“泰迪杯”数据挖掘挑战赛——C 题:运输车辆安全驾驶行为的分析

  • 一、问题背景
  • 二、研究问题
  • 三、分析问题
    • excel的批量处理
    • 时间、速度、方向角的处理
    • 经纬度的处理
    • 大数据处理的优化

一、问题背景

车联网是指借助装载在车辆上的电子标签通过无线射频等识别技术,实现在信息网络平
台上对所有车辆的属性信息和静、动态信息进行提取和有效利用,并根据不同的功能需求对
所有车辆的运行状态进行有效的监管和提供综合服务的系统。当前道路运输行业等相关部门
利用车联网等系统数据,开展道路运输过程安全管理的数据分析,以提高运输安全管理水平
和运输效率。
某运输企业所辖各车辆均存在常规运输路线与驾驶人员。在驾驶员每次运输过程中,车
辆均可自动采集当前驾驶行为下的行车状态信息并上传至车联网系统。驾驶行为可能随气
象、路况等因素的变化而变化,进一步影响行车安全、运输效率与节能水平。
请根据该运输企业所采集的数据(见附件 1、附件 2),分析车辆行驶过程中的驾驶行为
对行车安全、运输效率与节能情况的影响,运用数据挖掘的方法,建立有效的数学模型进行
评价。

二、研究问题

(1) 利用附件 1 所给数据,提取并分析车辆的运输路线以及其在运输过程中的速度、加
速度等行车状态。提交附表中 10 辆车每辆车每条线路在经纬度坐标系下的运输线路图及对
应的行车里程、平均行车速度、急加速急减速情况。
(2) 利用附件 1 所给数据,挖掘每辆运输车辆的不良驾驶行为,建立行车安全的评价模
型,并给出评价结果。
(3) 综合考虑运输车辆的安全、效率和节能,并结合自然气象条件与道路状况等情况,
为运输车辆管理部门建立行车安全的综合评价指标体系与综合评价模型。

在车辆运输过程中,不良驾驶行为主要包括疲劳驾驶、急加速、急减速、怠速预
热、超长怠速、熄火滑行、超速、急变道等。

三、分析问题

首先,题目给了有十三维数据,总共450个excel,以及一个天气汇总表。
我们观察到,450个excel数据格式都是一样的,平均每个excel有七八万条数据,如果手动计算挖掘的话,肯定会很麻烦。
数据维度

excel的批量处理

首先,我们来进行批量excel的处理。

import numpy as np                #che su wending xing
import pandas as pd
import osdef file_name( user_dir):file_list = list()for root, dirs, files in os.walk(user_dir):for file in files:# if os.path.splitext(file)[1] == '.txt':if file.split('.')[-1]=='csv':file_list.append(os.path.join(root, file))return file_list
path="d:\\car"     #此处的路径为存放excel的根目录
csv=file_name(path)         #得到一个列表,里面为450个excel的存放地址
for j in range(len(csv)):            #遍历这个列表data=pd.read_csv(csv[j])       #遍历每个excelfunction(data)                          #对每辆车的数据进行相应的处理

通过打印输出csv列表,得到如下:
在这里插入图片描述
我们的第一步,批量操作excel这一步完成了。

接下来就是对单个excel进行数据处理了。
在这里插入图片描述

时间、速度、方向角的处理

我们能够发现,方向角,经纬度,以及时间轴,acc状态,还有速度里程这几个变量可以为我们所利用。

很显然,我们可以知道这是一个基于时间序列的操作。
我们可以观察到时间轴的数据格式,转换为我们需要的格式,比如第二条时间减去第一条时间就是△t啦,这样我们就可以通过a=△v/△t,来计算加速度啦。

如何利用时间轴的数据呢?
下面这一个时间格式转换函数,相信对你一点有帮助。

import time
import datetime
import mathdef composeTime(time1):time2 = datetime.datetime.strptime(time1, "%Y-%m-%d %H:%M:%S")time3 = time.mktime(time2.timetuple())time4 = int(time3)return time4
t=[]
v=[]
for i in range(len(data["location_time"])):t1=data["location_time"][i]t2=data["location_time"][i+1]v1=data["gps_speed"][i]v2=data["gps_speed"][i+1]t0=t2-t1v0=v2-v1t.append(t0)v.append(v0)

这里面的△t和△v在列表t和列表v里面,相应的,我们还可以得到角变化量,进一步得到角加速度,可以用来判断急转弯,通过±a可以来判断急加速急减速。
角速度分布
在这里插入图片描述

经纬度的处理

经纬度的处理有很多方法,这里我们用python第三方库中最好用的一个库folium,自带地图。
当然,也有plotly,google earth呀,很多画地图的软件,这里,我们挑一个最简单的库。

import numpy as np
import pandas as pd
import seaborn as sns
import folium
import webbrowser
from folium.plugins import HeatMap
import osposi=pd.read_csv("D:\\C\\first\\AB00006.csv")lat = np.array(posi["lat"])                        # 获取维度之维度值
lon = np.array(posi["lng"])                       # 获取经度值
pop = np.array(posi["gps_speed"])    # 获取人口数,转化为numpy浮点型data1 = [[lat[i],lon[i],pop[i]] for i in range(len(lat))]    #将数据制作成[lats,lons,weights]的形式
m = folium.Map([ 33., 113.], tiles='stamentoner', zoom_start=5)route = folium.PolyLine(    #polyline方法为将坐标用线段形式连接起来data1,    #将坐标点连接起来weight=3,  #线的大小为3color='orange',  #线的颜色为橙色opacity=0.8    #线的透明度
).add_to(m)    #将这条线添加到刚才的区域m内m.save(os.path.join(r'd:\\C\\car', 'AA000002.html'))
m

我们得到如下路线图,观察到了存在一些漂移点。
在这里插入图片描述
这时,我们可能不知道怎么去处理这些异常点,或者说是漂移点。
我们应该通过计算速度与实际距离的关联性来判断是否为异常点。这时,我们需要用到下面这个经纬度与实际距离转换的函数来作进一步的优化:

def hypot(x,y):return math.sqrt(x**2+y**2)def distance(lat1, lon1, lat2, lon2):PI = 3.1415926535898R = 6.371229 * 1e6x = (lon2 - lon1) * PI * R * math.cos( ( (lat1 + lat2) / 2) * PI / 180) / 180y = (lat2 - lat1) * PI * R / 180out = hypot(x, y)return out

我们可以通过实际的 经纬度转换距离d 是否在 gps_speed *△t 理论距离这个正常区间范围内 。

大数据处理的优化

当我们把所有的分析代码写完之后,你会很开心地开始运行,你会发现速度会特别的慢,450个excel大约需要等待两个半小时,你可以打三把英雄联盟。
这里,我们需要用到一个第三方库numba,pip install numba 即可安装完毕。
@nb.jit 这个函数修饰器加速效果特别明显,也还有其他相关的库,有兴趣的同学可以自己去找找。
以下为计算车速稳定性的加速版完整excel处理代码:

import numpy as np                #che su wending xing
import pandas as pd
import seaborn as sns
import folium
import webbrowser
from folium.plugins import HeatMap
import os
import time
import datetime
import matplotlib.pyplot as plt
import math
import numba as nbdef composeTime(time1):time2 = datetime.datetime.strptime(time1, "%Y-%m-%d %H:%M:%S")time3 = time.mktime(time2.timetuple())time4 = int(time3)return time4def hypot(x,y):return math.sqrt(x**2+y**2)@nb.jit
def distance(lat1, lon1, lat2, lon2):PI = 3.1415926535898R = 6.371229 * 1e6x = (lon2 - lon1) * PI * R * math.cos( ( (lat1 + lat2) / 2) * PI / 180) / 180y = (lat2 - lat1) * PI * R / 180out = hypot(x, y)return outdef file_name( user_dir):file_list = list()for root, dirs, files in os.walk(user_dir):for file in files:# if os.path.splitext(file)[1] == '.txt':if file.split('.')[-1]=='csv':file_list.append(os.path.join(root, file))return file_list@nb.jit
def ji_wending_jit():for j in range(3):data=pd.read_csv(csv[j])v=[]count=0t=0for i in range(len(data["gps_speed"])-1):t1 = composeTime(data["location_time"][i])t2 = composeTime(data["location_time"][i+1])v1 = data["gps_speed"][i]if t2-t1<=100 and v1>0:count=count+1v.append(v1)t=t+(t2-t1)arr_std_v = np.std(v,ddof=1)arr_std_v_list.append(arr_std_v)T.append(t/(60*60))print("第"+str(j)+"个车分析完成")print("finish")csv=file_name("d:\\C\\car")T=[]
arr_std_v_list=[]
ji_wending_jit()Data=[]
Data.append(arr_std_v_list)print(Data)print(T)
#columns=["arr_std_v_list" ]# list转dataframe
#x=np.array(Data)
#print("finish the while")
#y=np.transpose(x)
#print("finish the transpose")
#df = pd.DataFrame(y, columns=columns)# 保存到本地excel
#df.to_excel("d:\\car_wendingxing.xlsx", index=False)
#print("save the excel")

在这里插入图片描述
得到了以下450辆车的排名和分布等级阶段。
这就是我对以上数据处理的过程。
由于笔者能力有限,如有不正确的地方,还请各位点名批评,互相交流学习。


http://chatgpt.dhexx.cn/article/AiochhLb.shtml

相关文章

利用SPSS Modeler进行数据挖掘——探究不同程序语言的就业情况

欢迎加入程序员QQ交流群&#xff5e;&#xff5e;&#xff1a;859022876 程序员 本次SPSS Modeler项目实战&#xff0c;是我个人课余做的一个简单案例&#xff0c;因为本人也是互联网大家庭中的一员&#xff0c;因此最关心的必定是程序语言的未来走势和就业情况&#xff0c;于是…

数据挖掘实战—餐饮行业的数据挖掘之数据探索(EDA)

文章目录 引言一、前期准备1.目标定义与任务理解 二、数据采集与抽样三、数据探索1.数据质量分析1.1缺失值分析1.1.1缺失值可视化1.1.2描述性统计1.1.3统计缺失数与缺失率 1.2异常值分析1.2.1 3σ原则1.2.2箱型图分析 1.3一致性分析1.4重复数据处理 2.数据特征分析2.1分布分析2…

数据挖掘实战—餐饮行业的数据挖掘之数据预处理

文章目录 引言一、数据清洗1.缺失值处理1.1 拉格朗日插值法1.2牛顿差值法 2.异常值的处理 二、数据集成1.实体识别2.冗余属性识别3.数据变换3.1 简单函数变换3.2 规范化3.2.1 最小-最大规范化3.2.2 零-均值规范化&#xff08;标准化&#xff09;3.2.3 小数定标规范化 3.3 连续属…

数据挖掘案例:建立客户流失模型

随着市场竞争的加剧&#xff0c;中国电信面临的压力越来越大&#xff0c;客户流失也日益增大。从统计数据看&#xff0c;今年固话小灵通的销户数已经超过了开户数。面对如此严峻的市场形式&#xff0c;当务之急就是要尽全力减少客户的流失。因此&#xff0c;利用数据挖掘方法&a…

数据挖掘实战案例——客户细分

我们首先来看看原始数据 具体代码与原始数据可以在我的GitHub中git clone一下学习 代码与数据github地址 共26663条数据 此次分析是想对根据客户的购买情况对客户进行细分 分析用户的购买消费行为 首先读取csv import pandas as pd #import numpy as np trad_flow pd.read_…

浅谈数据挖掘

一、数据挖掘起源 人们迫切希望能对海量数据进行深入分析&#xff0c;发现并提取隐藏在其中的信息&#xff0c;以更好地利用这些数据。但仅以数据库系统的录入、查询、统计等功能&#xff0c;无法发现数据中存在的关系和规则&#xff0c;无法根据现有的数据预测未来的发展趋势…

Python数据分析挖掘案例:Python爬虫助力疫情数据追踪

通过学习Python数据分析挖掘案例&#xff0c;可以掌握通过Python爬虫获取的数据进行处理以及可视化分析的主要方法和技能&#xff0c;并为后续相关课程学习及将来从事数据分析工作奠定基础。 新冠病毒疫情在武汉突然爆发&#xff0c;确诊病例、疑似病例、死亡病例等数据牵动着每…

【数据挖掘案例】财政收入影响因素分析及预测模型

案例来源自《Python 数据分析与挖掘实战》第 13 章&#xff1a;财政收入影响因素分析及预测模型 案例目的&#xff1a;预测财政收入 1 数据的基本描述性分析 数据 字段含义 社会从业人数(x1 )、 在岗职工工资总额&#xff08;x2&#xff09;、社会消费品零售总额(x3)、城镇…

python数据挖掘案例系列教程——python实现搜索引擎

全栈工程师开发手册 &#xff08;作者&#xff1a;栾鹏&#xff09; python数据挖掘系列教程 今天我们使用python实现一个网站搜索引擎。主要包含两个部分。网站数据库的生成、搜索引擎。其中搜索引擎部分我们使用单词频度算法、单词距离算法、外部回值算法、链接文本算法、pag…

工业数据挖掘实例

智能的基础是智能决策&#xff0c;所有的决策都来自于分析。所以简单说所有的智能都是做好两件事&#xff1a;收集数据&#xff0c;使用数据。数据挖掘技术根据业务数据不同有不同的应用场景。在我以往工作中主要在以下领域有应用尝试&#xff1a; 市场营销&#xff1a;用数据…

[数据挖掘案例]逻辑回归LR模型实现电商商品个性化推荐

目录 一、问题描述 二、数据摸底 三、数据清洗和特征筛选 3.1 数据抽取和清洗 3.2 特征筛选&#xff1a;决策树 3.3 特征分布转换 3.4 特征共线性检查 四、模型搭建 4.1 数据集 4.2 模型训练 4.3 模型验证 五、模型上线效果跟踪 一、问题描述 在电商平台中&#xff…

数据挖掘案例(2):用户画像

内容分为两个部分&#xff1a;     第一部分&#xff1a;用户画像概述     第二部分&#xff1a;用户画像案例 数据和源码 移步到Github &#xff1a; https://github.com/Stormzudi/Data-Mining-Case 邮箱&#xff1a;442395572qq.com 目录 第一部分&#xff1a;1…

数据挖掘案例实战:利用LDA主题模型提取京东评论数据(一)

泰迪智能科技&#xff08;数据挖掘平台&#xff1a;TipDM数据挖掘平台&#xff09;最新推出的数据挖掘实战专栏 专栏将数据挖掘理论与项目案例实践相结合&#xff0c;可以让大家获得真实的数据挖掘学习与实践环境&#xff0c;更快、更好的学习数据挖掘知识与积累职业经验 专栏…

数据挖掘案例实战:利用LDA主题模型提取京东评论数据(二)

泰迪智能科技&#xff08;数据挖掘平台&#xff1a;TipDM数据挖掘平台&#xff09;最新推出的数据挖掘实战专栏 专栏将数据挖掘理论与项目案例实践相结合&#xff0c;可以让大家获得真实的数据挖掘学习与实践环境&#xff0c;更快、更好的学习数据挖掘知识与积累职业经验 专栏…

数据挖掘学习(四)——常见案例总结

笔者是一个痴迷于挖掘数据中的价值的学习人&#xff0c;希望在平日的工作学习中&#xff0c;挖掘数据的价值&#xff0c;找寻数据的秘密&#xff0c;笔者认为&#xff0c;数据的价值不仅仅只体现在企业中&#xff0c;个人也可以体会到数据的魅力&#xff0c;用技术力量探索行为…

数据挖掘实例1:亲和性分析示例(代码、注释、运行结果)

前言 本实例采用python3环境&#xff0c;编辑器采用Jupyter Notebook&#xff0c;安装使用方法请参考&#xff0c;本实例中所用到的附件内容放在文末&#xff0c;如果想要自行运行一下代码&#xff0c;可以尝试一下。 Jupyter Notebook介绍、安装及使用教程 亲和性分析示例 …

Python数据挖掘 数据预处理案例(以航空公司数据为例)

Python数据预处理 一、内容&#xff1a; 1、数据清洗 2、数据集成 3、数据可视化 二、实验数据 根据航空公司系统内的客户基本信息、乘机信息以及积分信息等详细数据&#xff0c;依据末次飞行日期( LAST_FLIGHT_DATE)&#xff0c;以2014年3月31日为结束时间&#xff0c;选取…

Axure 9.0.0.3712 授权码

更新日志 2020年8月4日&#xff0c;Axure 更新了最新的版本&#xff0c;本次的版本号为 Axure RP 9.0.0.3712&#xff0c;具体更新内容如下&#xff1a; 自从Axure发布了9.0版本以后&#xff0c;很多小伙伴之前使用的注册码已经失效了&#xff0c;为了不影响想体验的小伙伴&am…

axure8.1 授权码

Licensee: University of Science and Technology of China (CLASSROOM) Key: DTXRAnPn1P65Rt0xB4eTQ4bF5IUF0gu0X9XBEUhM4QxY0DRFJxYEmgh4nyh7RtL 原文链接&#xff1a;http://blog.csdn.net/quanqinyang/article/details/78217464

关于Axure RP 的授权,我猜你还想知道......

Axure RP发展到今天&#xff0c;已经出到9的版本&#xff0c;当然破解授权码层出不穷。 有条件的朋友建议使用正版&#xff0c;可以避免以后可能出现的一些问题。 关于Axure授权码&#xff0c;有几点给大家说明一下。 一个Axure RP 的授权码是否可以多个人使用&#xff1f; 一…