共享单车数据分析

共享单车数据分析

一、数据分析

1.数据特征

总共15个特征:

特征名 含义 数据形式 单位
Trip duration 骑行持续时间 23
start time 骑行起始日期 2014/1/1 0:00:06 年月日
stop time 骑行终止日期 2014/1/1 0:00:12 年月日
start station id 起始站ID 2009
start station name 终止站名称 Catherine St & Monroe St
start station latitude 起始站纬度 40.71117444
start station longitude 起始站经度 -73.99682619
end station id 终止站ID 259
end station name 终止站名称 Elizabeth St & Hester St
end station latitude 终止站纬度 40.71729
end station longitude 终止站经度 -73.996375
bike id 单车ID 16379
user type 用户类型 Subscriber或Customer
birth year 用户生日 1989,单位:年
gender 性别 0或1或2

:性别(0=未知; 1 =男性; 2 =女性)

2.数据预处理

(1)数据文件读取

首先在本地创建一个文件夹dataSet,将12 个.csv数据集文件存入该文件夹。然后输入Python的文件操作模块glob,将dataSet文件夹下所有.csv文件读取到filename中,读取文件后返回的filename为列表List格式,然后通过列表排序函数.sort(),对文件名数字排序后再打印出来。

# 获取文件名
import glob
filenames = glob.glob('dataSet/*.csv')
filenames.sort()
print(filenames)

打印输出文件名列表:

['dataSet\\2014-01 - Citi Bike trip data.csv', 'dataSet\\2014-02 - Citi Bike trip data.csv', 'dataSet\\2014-03 - Citi Bike trip data.csv', 'data
Set\\2014-04 - Citi Bike trip data.csv', 'dataSet\\2014-05 - Citi Bike trip data.csv', 'dataSet\\2014-06 - Citi Bike trip data.csv', 'dataSet\\2014-07 - Citi Bike trip data.csv', 'dataSet\\2014-08 - Citi Bike trip data.csv', 'dataSet\\2014-09 - Citi Bike trip data.csv', 'dataSet\\2014-10 - Citi Bike trip data.csv', 'dataSet\\2014-11 - Citi Bike trip data.csv', 'dataSet\\2014-12 - Citi Bike trip data.csv']

(2)合并数据文件

输入pandas模块,利用循环,逐个通过函数pd.read_csv(file)读取12个数据文件flie,然后使用函数dfs.append(pd.read_csv(file)),将12个数据文件合并为一个列表dfs,该列表含有12个元素,每个元素为一个月的数据。

import pandas as pd
# 循环读取文件数据
dfs = []
for file in filenames:
    print('Reading ' + file)
    dfs.append(pd.read_csv(file))

打印输出拼接进程:

Reading dataSet\2014-01 - Citi Bike trip data.csv
Reading dataSet\2014-02 - Citi Bike trip data.csv
Reading dataSet\2014-03 - Citi Bike trip data.csv
Reading dataSet\2014-04 - Citi Bike trip data.csv
Reading dataSet\2014-05 - Citi Bike trip data.csv
Reading dataSet\2014-06 - Citi Bike trip data.csv
Reading dataSet\2014-07 - Citi Bike trip data.csv
Reading dataSet\2014-08 - Citi Bike trip data.csv
Reading dataSet\2014-09 - Citi Bike trip data.csv
Reading dataSet\2014-10 - Citi Bike trip data.csv
Reading dataSet\2014-11 - Citi Bike trip data.csv
Reading dataSet\2014-12 - Citi Bike trip data.csv

--------------------------------------------------------------注释分割线--------------------------------------------------------------
注:
通过pd.read_csv(file)函数读取的文件,会被转化为DataFrame文件,即表格型的数据,所以dfs中的12个元素均为DataFrame文件格式。
--------------------------------------------------------------注释分割线--------------------------------------------------------------

(3)数据格式转换

在检查数据格式的时候发现9月份以后所有数据的sarttime和stoptime日期格式与其他月份的格式不同,需要进行转换。
首先检查一下8月和9月的数据格式,输出前2行查看:

dfs[7].head(2) # 检查8月份的数据

输出:
在这里插入图片描述

dfs[8].head(2) #检查9月的数据

输出:
在这里插入图片描述

dfs[9].head(2) #检查10月的数据

输出:
在这里插入图片描述
很明显,8月和9月份及以后的数据的sarttime和stoptime日期格式统一,因此对数据的日期格式进行统一转化为日期格式。利用pandas库的pd.to_datetime()函数。

print('Converting month:')
for month in range(12):
    if month < 8:
        print('... ' + str(month + 1))
        dfs[month]['starttime'] = pd.to_datetime(dfs[month]['starttime'])
        dfs[month]['stoptime'] = pd.to_datetime(dfs[month]['stoptime'])
    else:
        print('... ' + str(month + 1))
        dfs[month]['starttime'] = pd.to_datetime(dfs[month]['starttime'],
                                                 format = '%m/%d/%Y %H:%M:%S')
        dfs[month]['stoptime'] = pd.to_datetime(dfs[month]['stoptime'],
                                                format = '%m/%d/%Y %H:%M:%S')

输出转化过程:

Converting month:
... 1
... 2
... 3
... 4
... 5
... 6
... 7
... 8
... 9
... 10
... 11
... 12

--------------------------------------------------------------注释分割线--------------------------------------------------------------
注:
在上述转化中,为什么将8月份以前的正确的日期也转化为datetime呢?因为在DataFrame中,日期有专门的格式,为datetime。而我们原始数据中的日期,虽然字面上和日期格式相同,但Python并不能识别出来是日期格式(人和机器的区别在此),我们通过代码查看一下两种日期的格式:

#打印出未处理的9月份starttime前两行的时间
dfs[9]['starttime'].head(2)

在这里插入图片描述

#打印出经过转化的8月份starttime前两行的时间
dfs[7]['starttime'].head(2)

在这里插入图片描述
如上两图所示,日期未转化前类型为:dtype:object,经过转化的日期格式为:dtype: datetime。这个object格式一般是python用来记录可变化的兑现的格式。这个格式python并不能认出是时间格式,尽管我们一眼就能看出。
--------------------------------------------------------------注释分割线--------------------------------------------------------------

(4)拼接数据

前面通过dfs.append(pd.read_csv(file))将所有的数据都放在了dfs列表中,其有12个DataFrame元素,现在将12个DataFrame数据拼接为一个数据表df。

df = pd.concat(dfs)

查看该数据表的大小:

df.shape

输出:

(8081216, 15)

即总共有808万次骑行数据,15个特征。

(5)存储数据<

  • 22
    点赞
  • 202
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
共享单车数据分析在现代城市交通中发挥着重要的作用。通过对共享单车数据的分析,我们可以了解用户的出行习惯、出行需求及地理分布等信息,为城市交通规划和运营提供有益的参考。 首先,共享单车数据可以帮助我们了解用户的出行习惯。通过分析不同时间段和地点的共享单车使用情况,可以了解到用户出行的高峰时段和热门地点。这些信息对于优化共享单车的投放策略和调度安排非常重要,能够提高用户的出行体验和服务质量。 其次,共享单车数据还可以帮助我们了解用户的出行需求。通过对用户的出行距离、出行目的地和出行时间等数据的分析,可以了解到用户在不同场景下的出行需求。例如,某些地区可能需要更多的共享单车供应,而另一些地区可能需要更多的停车位。这些信息可以为城市交通规划者提供指导,帮助他们更好地满足市民的出行需求。 最后,共享单车数据还可以帮助我们了解城市交通的地理分布情况。通过分析共享单车的使用热点和用户分布,可以了解到城市交通网络的状况和人口聚集区的分布。这对于城市交通规划者来说非常重要,可以帮助他们优化道路网络布局和公共交通线路规划,提高城市的交通效率和出行便利性。 总而言之,共享单车数据分析是一项重要的工作,可以为城市交通规划和运营提供有益的参考。通过对共享单车数据的分析,我们可以了解用户的出行习惯、出行需求及地理分布等信息,从而优化共享单车的投放策略和调度安排,提高城市交通的效率和服务质量。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值