我正在尝试使用张量流实现简单的功能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 <module>
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那里拿来的。
答案 0 :(得分:0)
显然,我给需要添加的文件夹名称错误,代码中也存在其他一些小错误。我必须给出每个文件夹的确切名称才能运行该程序,它在这里起作用的是正确的代码
name['en']