作者的照片
在本文中,我们将讨论一种不同的方法来读取文件夹中的多个 CSV 文件。读取操作非常简单,但是读取多个 CSV 文件有点麻烦。
在这里,一些方法被用来读取许多 CSV 文件,并将它们组合在一个数据帧中。
这个函数用于在递归中从路径目录中检索文件。这有点像匹配文件夹中的相同文件。当递归参数为 true 时,使用路径中的双星(**)。
文件夹中 CSV 文件的视图如下所示:
DWS_1 文件夹中的 CSV 文件。作者的照片
#Reading all CSV files and Concatenate Class-wisepath = r'C:\Users\Amit\MotionDataset\dws_1\**\*.csv'dws_1 = pd.concat((pd.read_csv(f) for f in iglob(path,
recursive=True)),ignore_index=True)path = r'C:\Users\Amit\MotionDataset\dws_2\**\*.csv'dws_2 = pd.concat((pd.read_csv(f) for f in iglob(path,
recursive=True)), ignore_index=True)path = r'C:\Users\Amit\MotionDataset\dws_11\**\*.csv'dws_11 = pd.concat((pd.read_csv(f) for f in iglob(path,
recursive=True)), ignore_index=True)# Concatenate Down Walking CSV files
dwslist = [dws_1, dws_2, dws_11]
final_dws = pd.concat(dwslist)
作者的照片
在这个方法中,我们使用了 google colab 在线交互式 python 笔记本,这是一个面向 python 和数据科学热心学习者的平台即服务(PaaS)。为了从 google drive 中读取数据,我们需要用下面的代码在 colab 中挂载这个驱动器。
**from** google.colab **import** drive
drive**.**mount('/content/drive')
此文件检索方法正在使用操作系统模块。os.walk 方法是从目录中读取文件的一种非常简单而古老的方法。这将从目录树中的所有文件夹读取并加载所有文件,如下所示:
作者的照片
*# Driver function*
**import** pandas **as** pd
**import** os
**import** seaborn **as** sns
dfmain **=** pd**.**DataFrame()
**for** (root,dirs,files) **in** os**.**walk('/content/drive/MyDrive/MotionDataset', topdown**=** **True**):
**for** i **in** files:
**if** ('.csv' **in** i) **and** ('(1)' **not** **in** i):
*#print(root,i)*
df **=** pd**.**read_csv(f'{root}/{i}')
df['id'] **=** i**.**split('.')[0]
df['action'] **=** root**.**split('/')[**-**1]
df['main_action'] **=** root**.**split('/')[**-**1]**.**split('_')[0]
dfmain **=** dfmain**.**append(df)
作者的照片
该方法也使用 OS 模块,但来自本地机器。这是使用 os.listdir 方法读取当前工作目录中的文件。
dws_1 = pd.DataFrame()
os.chdir(old+'\\dws_1')
for i,file in enumerate(os.listdir(os.getcwd()), start=1):
if file.endswith('.csv'):
temp_df = pd.read_csv(file)
temp_df['subject'] = i
dws_1 = dws_1.append(temp_df)
dws_2 = pd.DataFrame()
os.chdir(old+'\\dws_2')
for i,file in enumerate(os.listdir(os.getcwd()), start=1):
if file.endswith('.csv'):
temp_df = pd.read_csv(file)
temp_df['subject'] = i
dws_2 = dws_2.append(temp_df)dws_11 = pd.DataFrame()
os.chdir(old+'\\dws_11')
for i,file in enumerate(os.listdir(os.getcwd()), start=1):
if file.endswith('.csv'):
temp_df = pd.read_csv(file)
temp_df['subject'] = i
dws_11 = dws_11.append(temp_df)
down_df = pd.concat([dws_1,dws_2,dws_11])
down_df['Action'] = 'downstairs'
从所有不同文件夹中读取所有文件后,我们可以将所有数据框连接到主数据框,如以下代码所示。
final pd**.**concat([down_df,up_df,jog_df,sit_df,walk_df,
std_df])**.**drop('Unnamed: 0',1)
final
作者的照片
pub.towardsai.net](/identifying-and-handling-missing-data-in-python-ebe114776f78) [## 10 个 Python 项目,通过描述来增强知识
pub.towardsai.net](/10-python-projects-with-description-to-enhance-the-knowledge-cbd37e207418)
全球方法
这个方法就像一个从文件夹中读取文件的 iglob。在这种方法中,我们读取一种类型的所有 CSV 文件,并将它们连接到各自的类。
*# Here we are going to create a list of all csv files present in dws_1 folder*
dws_1_files**=**sorted(glob("D:\\MotionDataset\\dws_1\\sub_*.csv"))
dws_1_files
作者的照片
合并 dws_1 文件夹中的所有 CSV 文件
dws_1**=**pd**.**concat((pd**.**read_csv(file)**.**assign(Action**=**"downstairs")
**for** file **in** dws_1_files),ignore_index**=True**)
dws_1**.**columns#output:
Index(['Unnamed: 0', 'attitude.roll', 'attitude.pitch', 'attitude.yaw',
'gravity.x', 'gravity.y', 'gravity.z', 'rotationRate.x',
'rotationRate.y', 'rotationRate.z', 'userAcceleration.x',
'userAcceleration.y', 'userAcceleration.z', 'Action'],
dtype='object')
查看和调整 dws 类中的数据。
*#Dropping the unnamed column from dws_1 dataframe*
dws_1**.**drop(labels**=**["Unnamed: 0"],axis**=**1,inplace**=True**)# *Shape of dws_1 dataframe*
print("Shape of dws_1 is:",dws_1**.**shape)#output:
Shape of dws_1 is: (50246, 13)*# Top 5 rows of dws_1*
dws_1**.**head()
作者的照片
这些方法是非常基本的,有助于从不同的文件夹中读取多个文件。
我希望你喜欢这篇文章。通过我的 LinkedIn 和 twitter 联系我。
1.8 Python 的主动学习见解收集模块 2。 NumPy:图像上的线性代数3。Python 中的异常处理概念 4。熊猫:处理分类数据 5。超参数:机器学习中的 RandomSeachCV 和 GridSearchCV 6。用 Python 7 全面讲解了线性回归。用 Python 充分解释了 Logistic 回归 8。数据分发使用 Numpy 与 Python 9。机器学习中的决策树 vs 随机森林 10。用 Python 实现数据预处理的标准化