Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

calculate acceleration given speed

Sorry if this seems like a stupid question, I have a dataset which looks like this

type    time    latitude    longitude   altitude (m)    speed (km/h)    name    desc    currentdistance timeelapsed
T   2017-10-07 10:44:48 28.750766667    77.088805000    783.5   0.0 2017-10-07_10-44-48     0.0 00:00:00
T   2017-10-07 10:44:58 28.752345000    77.087840000    853.5   7.8         198.70532   00:00:10
T   2017-10-07 10:45:00 28.752501667    77.087705000    854.5   7.7         220.53915   00:00:12

Im not exactly sure how to approach this,calculating acceleration requires taking difference of speed and time,any suggestions on what i may try?

Thanks in advance

like image 889
Ryan Avatar asked Oct 25 '25 08:10

Ryan


1 Answers

Assuming your data was loaded from a CSV as follows:

type,time,latitude,longitude,altitude (m),speed (km/h),name,desc,currentdistance,timeelapsed
T,2017-10-07 10:44:48,28.750766667,77.088805000,783.5,0.0,2017-10-07_10-44-48,,0.0,00:00:00
T,2017-10-07 10:44:58,28.752345000,77.087840000,853.5,7.8,,,198.70532,00:00:10
T,2017-10-07 10:45:00,28.752501667,77.087705000,854.5,7.7,,,220.53915,00:00:12

The time column is converted to a datetime object, and the timeelapsed column is converted into seconds. From this you could add an acceleration column by calculating the difference in speed (km/h) between each row and dividing by the difference in time between each row as follows:

from datetime import datetime    
import pandas as pd
import numpy as np

df = pd.read_csv('input.csv', parse_dates=['time'], dtype={'name':str, 'desc':str})
df['timeelapsed'] = (pd.to_datetime(df['timeelapsed'], format='%H:%M:%S') - datetime(1900, 1, 1)).dt.total_seconds()
df['acceleration'] = (df['speed (km/h)'] - df['speed (km/h)'].shift(1)) / (df['timeelapsed'] - df['timeelapsed'].shift(1))

print df

Giving you:

  type                time   latitude  longitude  altitude (m)  speed (km/h)                 name desc  currentdistance  timeelapsed  acceleration
0    T 2017-10-07 10:44:48  28.750767  77.088805         783.5           0.0  2017-10-07_10-44-48  NaN          0.00000          0.0           NaN
1    T 2017-10-07 10:44:58  28.752345  77.087840         853.5           7.8                  NaN  NaN        198.70532         10.0          0.78
2    T 2017-10-07 10:45:00  28.752502  77.087705         854.5           7.7                  NaN  NaN        220.53915         12.0         -0.05
like image 121
Martin Evans Avatar answered Oct 26 '25 23:10

Martin Evans