数据导入与准备

一、目的:

    导入重庆出租车数据,为交通大数据与百度可视化准备

二、内容:

1. 将提供的出租车GPS数据导入Mysql数据库以下为出租车GPS数据字段说明。

本部分实验的内容包括:

1)在mysql数据库中新建出租车数据表,注意:数据表的索引的建立。

2)编写python程序,读取txt文件,并将与编号相对应的GPS数据写入数据表中。

2. 申请百度地图APK,并且在实验报告中附上所申请百度地图apk的截图。

百度地图开放平台网站:https://lbsyun.baidu.com

三、步骤

1. 将出租车GPS数据导入Mysql数据库

(1)创建出租车数据表

先创建traffic数据库

CREATE DATABASE traffic_data;

再创建traffic_data数据表,由于没有主键,定义一个自增的序号作为主键,并且字段“GPS_Type”1,因此为了节约空间以及存入时间,忽略这个字段,用SQL语言创建表:

use traffic_data;

CREATE TABLE `traffic_data`  (

  `GPS_ID` int  AUTO_INCREMENT,

  `DATE` date ,

  `TIME` time ,

  `ID` varchar(15) ,

  `LONGTITUDE` DECIMAL(9, 6) ,

  `LATITUDE` DECIMAL(8, 6) ,

  `SPEED` float,

  `ALTITUDE` int ,

  `PASSENGER` bit(1),

  PRIMARY KEY (`GPS_ID`)

);

数据结构表字段说明:

2)将数据写入到数据表中

筛选出第4列末尾字符为37的行,写入到SQL数据库的traffic_data库中的traffic_data表中。代码:

import pandas as pd
import os
from sqlalchemy import create_engine
class FliterData:
    def __init__(self, folder_addr="E:\\学习资料及作业\\3.2大三下\\3.交通大数据处理与分析\\01"):
        self.folder_addr = folder_addr

    def fliter_as(self, *args):
        self.names = ['DATE', 'TIME', 'ID1', 'ID', 'LONGTITUDE', 'LATITUDE', 'SPEED', 'ALTITUDE', 'PASSENGER',
                      'GPS_Type']

        count = 0
        # 创建一个错误数据df存错误数据
        self.error_df = pd.DataFrame(columns=self.names)
        self.error_df.drop('ID1', axis=1, inplace=True)
        self.error_df.drop('GPS_Type', axis=1, inplace=True)
        # 遍历文件夹
        for filename in os.listdir(self.folder_addr):
            file_path = os.path.join(self.folder_addr, filename)
            if os.path.isfile(file_path):
                # 创建一个空df保存结果
                self.df1 = pd.DataFrame(columns=self.names)
                self.df1.drop('ID1', axis=1, inplace=True)
                self.df1.drop('GPS_Type', axis=1, inplace=True)
                # 读取
                self.df = pd.read_csv(file_path, sep=',', names=self.names, encoding='GBK', converters={'TIME': str})
                # 删除名为'ID1'的列
                # axis=1参数表示操作的是列而不是行,inplace=True参数表示直接在原始DataFrame上进行修改,而不是创建一个新的DataFrame。
                self.df.drop('ID1', axis=1, inplace=True)
                self.df.drop('GPS_Type', axis=1, inplace=True)
                len1 = len(args)
                for i in range(len1):
                    mask = self.df['ID'].str.endswith(args[i])
                    # 使用布尔索引留下以args[i]结尾的行
                    self.df1 = pd.concat([self.df1, self.df[mask]], ignore_index=True)
                # 存入数据库,创建数据库引擎
                engine = create_engine('mysql+pymysql://root:123456@localhost:3306/traffic_data')
                self.df1.to_sql('traffic_data', con=engine, if_exists='append', index=False)
                print("{}载入数据库成功!".format(filename))
if __name__ == "__main__":
    fliter = FliterData()
    df = fliter.fliter_as('3', '7')

每写入一个txt文件都会出现一条txt数据载入成功的提示:

数据导入后,部分展示结果:

27291532条记录数据

2. 申请百度地图APK

(1)首先进入百度地图官网“百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com)”,然后注册申请。

(2)申请浏览器端,申请成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值