1. 程式人生 > 實用技巧 >python時空大資料

python時空大資料

時空大資料至少帶有三個資訊:使用者id,時間,空間

一、由GPS生成OD

1、讀取資料

import pandas 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']*2
data2.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提取