我正在尝试使用 tensorflow 实现简单的特征 DNN。我需要遍历目录中的每个文件夹,代码将读取特定文件夹中包含的每个 csv 文件。我在 A_Device_Motion 目录中有多个文件夹,名称分别为“dws_1”、“dws_2”、“jog_9”等。每个文件夹包含 csv 文件中 24 个主题活动的数据。我正在尝试遍历文件夹数据并在每次迭代时为 Activity 变量指定一个特定名称。但我面临的问题是我的代码无法完全读取文件夹名称并给我一个 keyError。我的文件夹结构看起来像这样
这是我的回溯
Traceback (most recent call last):
File "C:\Users\TechProBox\Desktop\python.py", line 21, in
df['Activity'] = Activety_Types[j[49:52]]
KeyError: 'ws_'
我的 Python 代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sklearn
from glob import glob
import os
import itertools
import tensorflow as tf
print(os.listdir("C:/Users/TechProBox/Desktop/A_DeviceMotion_data"))
Activety_Types = {'dws':1,'jog':2,'sit':3,'std':4,'ups':5,'wlk':6}
listDict = list(Activety_Types.keys())
Folders = glob('C:/Users/TechProBox/Desktop/A_DeviceMotion_data/*_*')
Folders = [s for s in Folders if "csv" not in s]
Df_all_list = []
Exp = 0
Segment_Size = 400
for j in Folders:
Csv = glob(j + '/*' )
for i in Csv:
df = pd.read_csv(i)
df['Activity'] = Activety_Types[j[49:52]]
df['Sub_Num'] = i[len(j)+5:-4]
df['Exp_num'] = 1
ExpNum = np.zeros((df.shape[0]))
for i in range(0,df.shape[0]-Segment_Size,Segment_Size):
ExpNum[range(i,i+Segment_Size)] = i/Segment_Size +Exp*100
df['Exp_num'] = ExpNum
Df_all_list.append(df)
Exp += 1
Df_all = pd.concat(Df_all_list,axis=0)
Df_all.head()
plt.plot([1,2,3])
for i in range(6):
D = Df_all[Df_all['Activity']==i+1]
plt.subplot(3,2,i+1)
plt.plot(D['userAcceleration.z'][:200])
plt.title(listDict[i])
plt.ylim([-1, 1])
plt.tight_layout()
我没有在这里粘贴整个代码,但我认为这段代码足以理解。我在这条线上遇到错误df['Activity'] = Activety_Types[j[49:52]]
PS:代码不是我的,我是从 kaggle 拿来的。
|