交通报警数据标准化排序

该博客介绍了如何使用标准化法对交通报警数据进行处理,并生成排序列表。标准化处理是数据分析中的重要步骤,有助于数据比较和分析。
摘要由CSDN通过智能技术生成

 交通报警数据标准化处理并生成排序列表。标准化方法通常有标准化法、极值处理法、功效系数法,这里是用标准化法进行处理。

标题

 

 

#coding=gbk
'''
Created on 2019年7月25日

@author: lenovo
'''
import pandas as pd
from audioop import avg
class MyClass:
    '''
            读取ali报警数据表,并计算标准化指标------------------标准化法
    '''
    
    def file_read(self,filename):
        """
                             读取数据文件并进行相关处理:增加一列存储标准化指标和,建立一张用来存储各个路口的标准化参数
        """
        global data#原始数据表
        global data_node#路口列表
        global data_time#时间列表
        global history_data
        #读取。csv文件
        data = pd.DataFrame(pd.read_csv(filename, encoding='utf-8'))
        #在原始数据中添加一列用来存储alarm_index的标准化指标
        data['stand_index']=None
        #提取路口列表(不重复)
        data_node=pd.DataFrame({"value":data['node_id'].unique()})#路口列表
        #提取时间片列表(不重复)
        data_time=pd.DataFrame({"value":data['time_point'].unique()})#时间列表
        #各个路口的标准化参数表
        history_data=pd.DataFrame({"node_id":data['node_id'].unique(),"max_index":None,"min_index":None})
    
    def chu(self,dat):
        #处理alarm_index得到标准化指标的的参数:均值、均方差,并存入标准化参数的历史数据表:history_data
        #计算每个路口的alarm_index均值和均方差
        i=0
        while(i<len(dat)):
            #提取某个路口的数据
            data_test=pd.DataFrame(data.loc[data['node_id']==data_node.iloc[i].value])
            #计算均值、均方差
            avg=data_test["alarm_index"].max()
            stand_dev=data_test['alarm_index'].min()
            #存入:history_data
            dat.iloc[i,1]=avg#均值
            dat.iloc[i,2]=stand_dev#均方差
            i=i+1  
    
    def road_alarm(self,data_alarm):
        #对某一时间点的报警数据进行标准化指标排序
        i=0
        while(i<len(data_alarm)):
            #从历史数据表:history_index中提取对应路口的参数值:均值、均方差
            thenode=pd.DataFrame(history_data.loc[history_data['node_id']==data_alarm.iloc[i,0]])
            #计算标准化指标:stand_index
            da=(data_alarm.iloc[i,4]-thenode['min_index'])/(thenode['max_index']-thenode['min_index'])
            data_alarm.iloc[i,5]=float(da)
            i=i+1
        #根据:stand_index进行排序,生成报警排序列表:报警等级由高到低
        return_data=data_alarm.sort_values('stand_index',ascending=False)
        return return_data
    
    def time_alone(self):
        #提取某一时间片的报警数据
        #提取某一时间片的
        i=4
        data_alarm=pd.DataFrame(data.loc[data['time_point']==data_time.iloc[i].value])
        return data_alarm
     
    def alarm_output(self,data_alarm):
        #生成特定格式的报警列表:node_id  roadsect_id  if_downstream  stand_index
        data_1=self.road_alarm(data_alarm)
        data_2=pd.DataFrame({'node_id':data_1['node_id'],
                             'roadsect_id':data_1['roadsect_id'],
                             'if_downstream':data_1['if_downstream'],
                             'stand_index':data_1['stand_index']})
        #print(data_1)
        print(data_2)
    def main(self):
        filename = 'C://Users//lenovo//Desktop//阿里报警结果表//阿里报警结果表.csv'
        time=''
        self.file_read(filename)
        self.chu(history_data)
        self.alarm_output(self.time_alone())
if __name__ == '__main__':
    alarm=MyClass()
    alarm.main()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值