Add Activity Recognizer for Python and own gitignore
This commit is contained in:
63
code/lukas/ActivityRecognition_Python/DataReader.py
Normal file
63
code/lukas/ActivityRecognition_Python/DataReader.py
Normal file
@@ -0,0 +1,63 @@
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
|
||||
|
||||
data_paths = ["Data/WalkingStairs", "Data/Standing",
|
||||
"Data/Walking", "Data/Fahrstuhl"]
|
||||
|
||||
|
||||
def read_data_files(path):
|
||||
accelerometer = pd.read_csv(
|
||||
path + "/Accelerometer.csv", sep=";", skiprows=1, header=0, names=["t", "ax", "ay", "az"])
|
||||
|
||||
barometer = pd.read_csv(path + "/Barometer.csv", sep=";",
|
||||
skiprows=1, header=0, names=["t", "bx", "by", "bz"])
|
||||
|
||||
events = pd.read_csv(path + "/Events.txt", sep=";",
|
||||
skiprows=0, header=None, names=["t", "event"])
|
||||
|
||||
data = pd.merge(accelerometer, barometer, on="t", how="outer")
|
||||
data = pd.merge(data, events, on="t", how="outer")
|
||||
data = data.sort_values('t')
|
||||
|
||||
# Fill all nan values in event with the last known event
|
||||
data['event'] = data['event'].fillna(method='pad')
|
||||
|
||||
# Add additional magnitude column
|
||||
data['magnitude'] = np.sqrt(data['ax']**2 + data['ay']**2 + data['az']**2)
|
||||
|
||||
return data
|
||||
|
||||
|
||||
def increment_timestamps(data_frames):
|
||||
"""
|
||||
data_frames: list
|
||||
"""
|
||||
max_t = 0
|
||||
for frame in data_frames:
|
||||
frame['t'] += max_t
|
||||
max_t = frame['t'].iloc[-1]
|
||||
|
||||
return data_frames
|
||||
|
||||
|
||||
def merge_data_frames(data_frames):
|
||||
df = pd.DataFrame()
|
||||
|
||||
for frame in data_frames:
|
||||
df = df.append(frame, ignore_index=True)
|
||||
|
||||
return df
|
||||
|
||||
|
||||
def load_all_data():
|
||||
print("Loading data files...")
|
||||
d = []
|
||||
for path in data_paths:
|
||||
data = read_data_files(path)
|
||||
d.append(data)
|
||||
|
||||
d = increment_timestamps(d)
|
||||
data = merge_data_frames(d)
|
||||
|
||||
return data
|
||||
Reference in New Issue
Block a user