时空大数据至少带有三个信息:用户id,时间,空间
一、由GPS生成OD
1、读取数据
importpandas as pd#读取数据
data = pd.read_csv(r'data-sample/TaxiData-Sample',header =None)#给数据命名列
data.columns = ['VehicleNum', 'Stime', 'Lng', 'Lat', 'OpenStatus', 'Speed']
① pd.read_csv()
路径名字符串前要加r。
header=None表示原始文件没有列索引,自动加上列索引0,1,2...。
header=0表示第0行作为列索引。
可以通过name属性指定新的索引名字,如names=range(2,4)。
② data.columns
data.index返回一个index类型的行索引列表
data.columns返回一个index类型的列索引列表
#显示数据的前5行
data.head(5)
VehicleNum —— 车牌
Stime —— 时间
Lng —— 经度
Lat —— 纬度
OpenStatus —— 是否有乘客(0没乘客,1有乘客)
Speed —— 速度
type(data)
type(data['Lng'])
type(data[['Lng']])
当我们读一个数据的时候,我们读进来的就是DataFrame格式的数据表,而一个DataFrame中的每一列,则为一个Series也就是说,DataFrame由多个Series组成。
如果我们想取DataFrame的某一列,想得到的是Series:data[列名]
如果我们想取DataFrame的某一列或者某几列,想得到的是DataFrame:data2[[列名,列名]]
2、筛选数据
在筛选数据的时候,我们一般用data[条件]的格式,其中的条件,是对data每一行数据的true和false布尔变量的Series
data['VehicleNum'] == 22271
得到一个Series,可以作为筛选条件。
data[data['VehicleNum'] == 22271]
想要去掉所筛选的数据,有两种方法
data[data['VehicleNum'] != 22271]
data[-(data['VehicleNum'] == 22271)]
data[-(条件)]
data2 = data[(data['VehicleNum']==22271)|(data['VehicleNum']==23873)]
data2
data2['Speed2'] = data2['Speed']*2data2.loc[4] #取某一行,以index来取
data2.iloc[1000] #以绝对位置来取(就是从上往下数第1000行)
iloc是按照行数取值,而loc按着index名取值
data2.drop(['Speed2'],axis=1) #删除Speed2列
在获取某行某列的数据时,记得一定要用iloc(按表目前排列的顺序取),不能用loc(按index取)
因为很多时候我们做完筛选、排序等操作,表就不是按index来排列,用loc取行就会取错行,或者直接报错(没有这个index)
#获取Stime列的第4行数据
data['Stime'].iloc[3]
3、出租车OD提取