# -*- coding:utf-8 -*-
"""
作者:sunli
日期:2022年03月09日21:19
"""
# -*- coding:utf-8 -*-
import os
import cv2
import pandas as pd
import numpy as np
import configparser as cp
import matplotlib.pyplot as plt
# RAW_DATA_PATH = 'D:/shujuji/MobiAct_Dataset_v2.0/Annotated Data'
PATH = 'D:/sy'
# DATA_PATH = 'D:/shujuji/MobiAct_Dataset_v2.0/Annotated Data/DATA'
# PATH='D:/shujuji/MobiAct_Dataset_v2.0/kalman/'
Label = {'STD': 1, 'WAL': 2, 'JOG': 3, 'JUM': 4, 'STU': 5, 'STN': 6, 'SCH': 7, 'SIT': 8, 'CHU': 9,
'LYI': 10, 'FOL': 0, 'FKL': 0, 'BSC': 0, 'SDL': 0, 'CSI': 11, 'CSO': 12} # 字典
def extract_data(data_file, sampling_frequency):
"""
从mobileFall中提取数据,用于做实验测试
:param data_file: 原始数据文件
:param sampling_frequency: 原始数据采集频率
:return:
"""
data = pd.read_csv(data_file) # 指定源文件第一列作为行索引
data_size = len(data.label) # 标签数量
for i in range(data_size):
#print(data.iat[i, 11])
data.iat[i, 11] = Label[data.iloc[i, 11]] # 将对应的数字付给data的标签
# print(data.iat[i, 11])
# 单元格选取包括df.at[]和df.iat[]两种方法。
# df.at[]和df.iat[]使用时必须输入两个参数,即行索引和列索引,其中df.at[]只能使用标签索引,df.iat[]只能使用整数索引。
# df.at[]和df.iat[]选取的都是单个单元格(单行单列),所以返回值都为基本数据类型
col_data = np.arange(0, data_size, 1) # 第一个参数为起点,第二个参数为终点,第三个参数为步长
# # 滑动窗口就是能够根据指定的单位长度来框住时间序列,从而计算框内的统计指标。相当于一个长度指定的滑块在刻度尺上面滑动,每滑动一个单位即可反馈滑块内的数据。
extract_data = data.iloc[col_data, [0, 1, 2, 3, 4, 5, 6, 7, 11]] # 选取加速度计和陀螺仪数据和行为标签
print(extract_data)
# save_path = os.path.abspath('D:/shujuji/MobiAct_Dataset_v2.0/Annotated Data/DATA/'+((os.path.dirname(data_file) + os.path.sep + ".").replace(RAW_DATA_PATH, '')) )#语法:os.path.dirname(path)
# 功能:去掉文件名,返回目录
#
save_path = os.path.abspath(os.path.dirname(data_file) + os.path.sep + ".").replace(PATH, '')
if not os.path.exists(save_path):
os.makedirs(save_path)
save_path = PATH + data_file.replace(PATH, '')
extract_data.to_csv(save_path, index=0)
def find_all_data_and_extract(path):
"""
递归的查找所有文件并进行转化
:param path:
:return:
"""
if not os.path.exists(path): # 检查在某路径内是否存在某文件。如果path存在,返回True;如果path不存在,返回False
print('路径存在问题:', path)
return None
for i in os.listdir(path): # 得到路径path下的所有文件,返回list列表形式 i="BSC"
if os.path.isfile(path + "/" + i):
if 'csv' in i:
extract_data(path + "/" + i, 200)
else:
find_all_data_and_extract(path + "/" + i)
def main():
find_all_data_and_extract(PATH) # 对原始数据做处理
if __name__ == '__main__':
main()
# data = pd.read_csv('D:/sy/s2/BSC_1_2_annotated.csv')
# print(data)
"""
data1 = pd.read_csv('D:/shujuji/MobiAct_Dataset_v2.0/kalman/BSC_1_1_annotated.csv')
show_data(data1)
data2 = pd.read_csv('D:/shujuji/MobiAct_Dataset_v2.0/test/BSC/BSC_1_1_annotated.csv')
show_data(data2)
"""
|