import pandas as pd
import matplotlib as plt
%matplotlib inline
import seaborn as sns
import numpy as np
files_list = pd.DataFrame({'file_name':
['0_2019_11_21-03_51_01_rychlost_pazmany_JA.txt',
'1_2019_11_21-06_18_54_rychlost_pazmany_MARTIN_CAKL.txt',
'2_2019_11_21-06_33_24_rychlost_pazmany_JIRKA.txt',
'3_2019_11_21-07_29_48_rychlost_pazmany_BASKA.txt',
'4_2019_11_21-07_45_29_rychlost_pazmany_MICHAL.txt',
'5_2019_11_21-08_00_40_rychlost_pazmany_J1.txt',
'6_2019_11_21-08_43_37_rychlost_pazmany_J2.txt',
'7_2019_11_21-09_00_09_rychlost_pazmany_J3.txt',
'8_2019_11_21-09_25_26_rychlost_pazmany_J4.txt',
'9_2019_11_21-09_54_21_rychlost_pazmany_J5.txt',
'10_2019_11_21-09_54_21_rychlost_pazmany_J6.txt',
'11_2019_11_21-10_49_54_rychlost_pazmanyJ_7.txt',
'12_2019_11_21-11_04_22_rychlost_pazmany_J8.txt',
'13_2019_11_21-11_19_04_rychlost_pazmany_J9.txt',
'14_2019_11_21-11_34_26_rychlost_pazmany_J10.txt',
'15_2019_11_21-12_18_55_rychlost_pazmany_AJ11.txt',
'16_2019_11_21-11_57_56_rychlost_pazmany_TJ12.txt']})
df_avg = pd.DataFrame()
count = 0
for sets in range(16,0,-1):
ds = pd.read_csv(str(files_list.iloc[sets, 0]), sep=' ', header=None)
print('load {} file {}'.format(set, files_list.iloc[sets, 0]))
df = ds.iloc[:, [0,1,2,3,4,8]].copy()
df.columns=['id', 'time', 'x', 'z', 'y', 'velocity']
df['y'] = -df['y']
df['velocity'] = df['velocity'] * 3.6
df['distance'] = 0
for i in range (len(df)-1):
df.loc[i, 'distance'] = np.sqrt((df['x'][i]-df['x'][i+1])**2
+(df['y'][i]-df['y'][i+1])**2
+(df['z'][i]-df['z'][i+1])**2)
print('distancexyz {}'.format(sets))
df['distance_check'] = False
distance = 0
df['distance_total'] = 0
j=0
for i in range(len(df)):
if df.loc[j:i, 'distance'].sum() > 100:
df.loc[i, 'distance_check'] = True
distance = distance + 100
df.loc[i, 'distance_total'] = distance
j = i
df = df[df['distance_check']].reset_index()
print('distance {}'.format(sets))
df['zone'] = 0
df['zone_index'] = 0
zone_index1 = 0
zone_index2 = 0
zone_index3 = 0
zone_index4 = 0
for i in range(len(df)-1):
if df['x'][i] > 13306.155 and df['x'][i] < 13844.208 and df['y'][i] > 1636.532 and df['y'][i] < 5375.833:
df.loc[i, 'zone'] = 1
if df.loc[i, 'distance_check']:
zone_index1 = zone_index1 + 1
df.loc[i, 'zone_index'] = zone_index1
elif df['x'][i] > 9713.305 and df['x'][i] < 13452.605 and df['y'][i] > 5232.253 and df['y'][i] < 5770.306:
df.loc[i, 'zone'] = 2
if df.loc[i, 'distance_check']:
zone_index2 = zone_index2 + 1
df.loc[i, 'zone_index'] = zone_index2
elif df['x'][i] > 9318.832 and df['x'][i] < 9856.885 and df['y'][i] > 1636.532 and df['y'][i] < 5371.468:
df.loc[i, 'zone'] = 3
if df.loc[i, 'distance_check']:
zone_index3 = zone_index3 + 1
df.loc[i, 'zone_index'] = zone_index3
elif df['x'][i] > 9717.851 and df['x'][i] < 13457.151 and df['y'][i] > 1236.984 and df['y'][i] < 1775.037:
df.loc[i, 'zone'] = 4
if df.loc[i, 'distance_check']:
zone_index4 = zone_index4 + 1
df.loc[i, 'zone_index'] = zone_index4
df['distance_zone']=0
df['x_zone']=0
df['y_zone']=0
j=0
for i in range(len(df)-2):
if (df['zone'][i]!=df['zone'][i+1]) and (df['zone'][i+1]!=0):
j = i
df.loc[i, 'distance_zone']=df['distance_total'][i]-df['distance_total'][j]
df.loc[i, 'x_zone']=df['x'][i]-df['x'][j]
df.loc[i, 'y_zone']=df['y'][i]-df['y'][j]
df.to_csv('calculated_{}'.format(sets))
df_avg1 = df[(df['zone_index']!=0)&(df['zone']!=0)]
df_avg = pd.concat([df_avg, df_avg1]).groupby(['zone','zone_index']).sum()
df_avg.drop(['index', 'id'], axis=1, inplace=True)
df_avg.reset_index(inplace=True)
count += 1
print(count)
for i in range(2,13):
df_avg.iloc[:, i] = df_avg.iloc[:, i] / count
df_avg
df_avg1 = pd.DataFrame()
df_avg3 = pd.DataFrame()
for i in range(1,17):
df_avg3 = pd.read_csv('calculated_{}'.format(i))
df_avg2 = df_avg3[(df_avg3['zone_index']!=0)&(df_avg3['zone']!=0)]
df_avg1 = pd.concat([df_avg1, df_avg2]).groupby(['zone','zone_index']).sum()
df_avg1.drop(['index', 'id', 'Unnamed: 0'], axis=1, inplace=True)
df_avg1.reset_index(inplace=True)
for i in range(2,13):
df_avg1.iloc[:, i] = df_avg1.iloc[:, i]/16
df_avg = df_avg1
sns.set(rc={'figure.figsize':(15,4)})
g = sns.scatterplot(x='y_zone', y='x_zone', data=df_avg[(df_avg['zone']==1)], hue='velocity')
g.set(xlim=(None, None), ylim=(-1000, 1000), xlabel='Súradnice x [m]', ylabel='Súradnice y [m]', title='Priebeh rýchlosti na úseku č. 1')
g.legend(title='Rychlost [km/h]', bbox_to_anchor=(1.01, 1), loc=2)
g.invert_yaxis()
sns.set(rc={'figure.figsize':(15,4)})
g = sns.scatterplot(x='x_zone', y='y_zone', data=df_avg[(df_avg['zone']==2)], hue='velocity')
g.set(xlim=(None, None), ylim=(-1000, 1000), xlabel='Súradnice x [m]', ylabel='Súradnice y [m]', title='Priebeh rýchlosti na úseku č. 2')
g.legend(title='Rychlost [km/h]', bbox_to_anchor=(1.01, 1), loc=2)
g.invert_yaxis()
g.invert_xaxis()
sns.set(rc={'figure.figsize':(15,4)})
g = sns.scatterplot(x='y_zone', y='x_zone', data=df_avg[(df_avg['zone']==3)], hue='velocity')
g.set(xlim=(None, None), ylim=(-1000, 1000), xlabel='Súradnice x [m]', ylabel='Súradnice y [m]', title='Priebeh rýchlosti na úseku č. 3')
g.legend(title='Rychlost [km/h]', bbox_to_anchor=(1.01, 1), loc=2)
g.invert_xaxis()
sns.set(rc={'figure.figsize':(15,4)})
g = sns.scatterplot(x='x_zone', y='y_zone', data=df_avg[(df_avg['zone']==4)], hue='velocity')
g.set(xlim=(None, None), ylim=(-1000, 1000), xlabel='Súradnice x [m]', ylabel='Súradnice y [m]', title='Priebeh rýchlosti na úseku č. 4')
g.legend(title='Rychlost [km/h]', bbox_to_anchor=(1.01, 1), loc=2)
sns.set(rc={'figure.figsize':(15,4)})
g = sns.lineplot(x='distance_zone', y='velocity', data=df_avg1[(df_avg1['zone']==1)][:39])
g.set(xlabel='Prejdená vzdialenosť [m]', ylabel='Rýchlosť [km/h]', title='Priebeh rýchlosti na úseku č. 1')
sns.set(rc={'figure.figsize':(15,4)})
g = sns.lineplot(x='distance_zone', y='velocity', data=df_avg[df_avg['zone']==2])
g.set(xlabel='Prejdená vzdialenosť [m]', ylabel='Rýchlosť [km/h]', title='Priebeh rýchlosti na úseku č. 2')
sns.set(rc={'figure.figsize':(15,4)})
g = sns.lineplot(x='distance_zone', y='velocity', data=df_avg[(df_avg['zone']==3)])
g.set(xlabel='Prejdená vzdialenosť [m]', ylabel='Rýchlosť [km/h]', title='Priebeh rýchlosti na úseku č. 3')
sns.set(rc={'figure.figsize':(15,4)})
g = sns.lineplot(x='distance_zone', y='velocity', data=df_avg[(df_avg['zone']==4)])
g.set(xlabel='Prejdená vzdialenosť [m]', ylabel='Rýchlosť [km/h]', title='Priebeh rýchlosti na úseku č. 4')
g = sns.lineplot(x='distance_total', y='velocity', data=df_avg[df_avg['zone']!=0], ci=None)
g.set(xlim=(0, 16500), ylim=(0,140))
g.set(xlabel='Prejdená vzdialenosť [m]', ylabel='Rýchlosť [km/h]', title='Priebeh priemernej rýchlosti na úseku na celej trase')
for i in range(1,5):
avg_velocity = round(df_avg[df_avg['zone']==i]['velocity'].mean(), 2)
print("Priemerna rýchlosť v zóně č. {} = {} km/h".format(i, avg_velocity))
df_all = pd.DataFrame()
i=1
for i in range(1,17):
no1=pd.read_csv('calculated_{}'.format(i))
no1['ride'] = 'ride_{}'.format(i)
df_all = pd.concat([df_all, no1], axis=0)
g = sns.lineplot(x='distance_total', y='velocity', data=df_all, hue='ride', ci=None)
g.set(xlim=(0, 17500), ylim=(50,None))
g.legend(title='Jízda číslo:', bbox_to_anchor=(1.01, 1), loc=2)
g.set(xlabel='Prejdená vzdialenosť [m]', ylabel='Rýchlosť [km/h]', title='Priebeh rýchlosti na úseku na celé trase')
g = sns.lineplot(x='distance_zone', y='velocity', data=df_all[df_all['zone']==1], hue='ride', ci=None)
g.set(xlim=(0, 4000), ylim=(50,None))
g.legend(title='Jízda číslo:', bbox_to_anchor=(1.01, 1), loc=2)
g.set(xlabel='Prejdená vzdialenosť [m]', ylabel='Rýchlosť [km/h]', title='Priebeh rýchlosti na úseku č v zóně č. 1')
g = sns.lineplot(x='distance_zone', y='velocity', data=df_all[df_all['zone']==2], hue='ride', ci=None)
g.set(xlim=(0, 4000), ylim=(50,None))
g.legend(title='Jízda číslo:', bbox_to_anchor=(1.01, 1), loc=2)
g.set(xlabel='Prejdená vzdialenosť [m]', ylabel='Rýchlosť [km/h]', title='Priebeh rýchlosti na úseku č v zóně č. 2')
g = sns.lineplot(x='distance_zone', y='velocity', data=df_all[df_all['zone']==3], hue='ride', ci=None)
g.set(xlim=(0, 4000), ylim=(50,None))
g.legend(title='Jízda číslo:', bbox_to_anchor=(1.01, 1), loc=2)
g.set(xlabel='Prejdená vzdialenosť [m]', ylabel='Rýchlosť [km/h]', title='Priebeh rýchlosti na úseku č v zóně č. 3')
g = sns.lineplot(x='distance_zone', y='velocity', data=df_all[df_all['zone']==4], hue='ride', ci=None)
g.set(xlim=(0, 4000), ylim=(50,None))
g.legend(title='Jízda číslo:', bbox_to_anchor=(1.01, 1), loc=2)
g.set(xlabel='Prejdená vzdialenosť [m]', ylabel='Rýchlosť [km/h]', title='Priebeh rýchlosti na úseku č v zóně č. 4')