DCIC巡游车与网约车运营特征对比分析-数据读取

读取代码

由于赛题给定的数据集文件都比较大,文件行数都比较多,如果完全进行读取可会让电脑卡死,内存爆炸;

  • 可以只读取部分文件,读取单个文件完成数分析;
  • 修改字段类型节约空间;

接下来看单个文件和部分文件的读取方法

1. 巡游车GPS数据读取
在读取数据时,可以完成以下操作:

  • 通过read_csv函数输入路径和nrows设置读取的文件行数;
  • nrows可以取值为数值或者None,前者数值控制行数,后者读取所有(默认是读取所有);
  • 读取完成后的数据为DataFrame形式,可以通过describe()函数完成描述型分析统计;

建议大家先设置nrows完成读取,不要直接读取所有文件;

import pandas as pd
import numpy as np

# 文件目录,相对路径
INPUT_PATH = 'E:/python-project/deep-learning/datawhale/2020DCIC/data/taxiGps20190531/'

# 文件读取行数
MAX_ROWS = 100000 

taxigps2019 = pd.read_csv(INPUT_PATH + 'taxiGps20190531.csv', nrows=MAX_ROWS)
taxigps2019.describe()

在这里插入图片描述

  • 通过info()函数完成表格信息展示;
taxigps2019.info()

在这里插入图片描述
通过describe()info()函数,我们可以初步得到现有的字段的取值,10w条数据占用5MB内存。我们也可以完成数据字段压缩的操作,将字段类型根据取值空间进行修改,压缩内存使用需求。

import pandas as pd
import numpy as np

INPUT_PATH = 'E:/python-project/deep-learning/datawhale/2020DCIC/data/taxiGps20190531/' #文件目录
MAX_ROWS = 100000 # 文件读取行数

taxigps2019 = pd.read_csv(INPUT_PATH + 'taxiGps20190531.csv', nrows=MAX_ROWS,
                         dtype = {
                             'DRIVING_DIRECTION': np.uint16,
                             'OPERATING_STATUS': np.uint8,
                             'LONGITUDE': np.float32,
                             'LATITUDE': np.float32,
                             'GPS_SPEED': np.float16 
                         })

taxigps2019.info()

在这里插入图片描述
为了方便查看数据,我们还可以对GPS数据进行排序,这样就完成了单个文件的读取。

taxigps2019 = taxigps2019[taxigps2019.columns[::-1]]
taxigps2019.sort_values(by=['CARNO','GPS_TIME'], inplace=True)
taxigps2019.reset_index(inplace=True, drop=True)
taxigps2019.head()

在这里插入图片描述
多个文件(多天)可以直接将文件进行拼接即可:

# 出租车2019年GPS
taxigps2019 = pd.concat([
    pd.read_csv(INPUT_PATH + 'taxiGps20190531.csv', nrows=MAX_ROWS,
                         dtype = {
                             'DRIVING_DIRECTION': np.uint16,
                             'OPERATING_STATUS': np.uint8,
                             'LONGITUDE': np.float32,
                             'LATITUDE': np.float32,
                             'GPS_SPEED': np.float16 
                         }),
    pd.read_csv(INPUT_PATH + 'taxiGps20190601.csv', nrows=MAX_ROWS,
                         dtype = {
                             'DRIVING_DIRECTION': np.uint16,
                             'OPERATING_STATUS': np.uint8,
                             'LONGITUDE': np.float32,
                             'LATITUDE': np.float32,
                             'GPS_SPEED': np.float16 
                         })
])
taxigps2019 = taxigps2019[taxigps2019.columns[::-1]]
taxigps2019['GPS_TIME'] = pd.to_datetime(taxigps2019['GPS_TIME'])
taxigps2019.sort_values(by=['CARNO','GPS_TIME'], inplace=True)
taxigps2019.reset_index(inplace=True)

2. 巡游车订单读取
巡游车订单数据单个文件读取:

taxiorder2019 = pd.read_csv(INPUT_PATH + 'taxiOrder20190531.csv', nrows=MAX_ROWS,
                           dtype = {
                               'GETON_LONGITUDE': np.float32,
                               'GETON_LATITUDE': np.float32,
                               'GETOFF_LONGITUDE': np.float32,
                               'GETOFF_LATITUDE': np.float32,
                               'PASS_MILE': np.float16,
                               'NOPASS_MILE': np.float16,
                               'WAITING_TIME': np.float16
                           })

taxiorder2019 = taxiorder2019.rename(columns={'CAR_NO':'CARNO'})
taxiorder2019.sort_values(by=['CARNO','GETON_DATE'], inplace=True)
taxiorder2019.reset_index(inplace=True, drop=True)

巡游车订单数据多个文件读取:

taxiorder2019 = pd.concat([
    pd.read_csv(INPUT_PATH + 'taxiOrder20190531.csv', nrows=MAX_ROWS,
                           dtype = {
                               'GETON_LONGITUDE': np.float32,
                               'GETON_LATITUDE': np.float32,
                               'GETOFF_LONGITUDE': np.float32,
                               'GETOFF_LATITUDE': np.float32,
                               'PASS_MILE': np.float16,
                               'NOPASS_MILE': np.float16,
                               'WAITING_TIME': np.float16
                           }),
    pd.read_csv(INPUT_PATH + 'taxiOrder20190601.csv', nrows=MAX_ROWS,
                           dtype = {
                               'GETON_LONGITUDE': np.float32,
                               'GETON_LATITUDE': np.float32,
                               'GETOFF_LONGITUDE': np.float32,
                               'GETOFF_LATITUDE': np.float32,
                               'PASS_MILE': np.float16,
                               'NOPASS_MILE': np.float16,
                               'WAITING_TIME': np.float16
                           })
])
taxiorder2019 = taxiorder2019.rename(columns={'CAR_NO':'CARNO'})
taxiorder2019.sort_values(by=['CARNO','GETON_DATE'], inplace=True)
taxiorder2019.reset_index(inplace=True, drop=True)

3. 网约车GPS数据读取

wycgps2019 = pd.read_csv(INPUT_PATH + 'wycGps20190531.csv', nrows=MAX_ROWS,
                        dtype={
                            'LONGITUDE': np.float32,
                            'LATITUDE': np.float32,
                            'SPEED': np.float16
                        })

wycgps2019 = wycgps2019.rename(columns={'CAR_NO':'CARNO'})
wycgps2019 = wycgps2019[wycgps2019.columns[::-1]]
wycgps2019.sort_values(by=['CARNO','POSITION_TIME'], inplace=True)

wycgps2019['BIZ_STATUS'] = wycgps2019['BIZ_STATUS'].fillna(-1).astype(np.int8)
wycgps2019['ENCRYPT'] = wycgps2019['ENCRYPT'].fillna(-1).astype(np.int8)

4. 网约车订单数据读取

wycorder2019 = pd.read_csv(INPUT_PATH + 'wycOrder20190531.csv', nrows=MAX_ROWS,
                        dtype={
                            'DEP_LONGITUDE': np.float32,
                            'DEP_LATITUDE': np.float32,
                            'DEST_LONGITUDE': np.float32,
                            'DEST_LATITUDE': np.float32,
                        })
wycorder2019 = wycorder2019.rename(columns={'CAR_NO':'CARNO'})
wycorder2019.sort_values(by=['CARNO','DEP_TIME'], inplace=True)

数据统计

赛题数据基本可以分为四类,不同类型的赛题数据在字段格式上有一定差异:

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

为了方便大家学习,接下来我们将以巡游车GPStaxiGps20190531.csv为案例进行数据统计:

  • 有多少辆出租车:
    • taxigps2019[‘CARNO’].nunique()
  • 出租车平均GPS速度:
    • np.clip(taxigps2019[‘GPS_SPEED’].values, 0, 150).mean()
  • 出租车运营状态统计:
    • taxigps2019[‘OPERATING_STATUS’].value_counts()
  • 某辆巡游车数据:
    • taxigps2019[taxigps2019[‘CARNO’] == ‘0006d282be70d06881a7513b69fcaa60’]
  • 某个运行方向的车辆统计:
    • taxigps2019[taxigps2019[‘DRIVING_DIRECTION’] == 10][‘CARNO’].unique()
  • 统计记录最多的GPS小时:
    • taxigps2019[‘GPS_TIME’] = pd.to_datetime(taxigps2019[‘GPS_TIME’])
    • taxigps2019[‘GPS_TIME’].dt.hour.value_counts()
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩波的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值