共有五个文件,每个文件夹中各有命名为1-10的.txt文件,每个文件中有4000个采集数据,构成了5个4000×10矩阵。
计算所有txt文件的标准差,按照相同命名.txt取“标准差最大”原则重新排列4000×10矩阵
(例如:8.txt的标准差在0-120五个文件夹中分别是1,2, 3, 4, 5,则取“120”文件夹中的8.txt。其他1-10.txt 与上相同,最终构成新的4000×10矩阵)
请教论坛Python专家,要怎么编写??感谢万分!
共有五个文件,每个文件夹中各有命名为1-10的.txt文件,每个文件中有4000个采集数据,构成了5个4000×10矩阵。
计算所有txt文件的标准差,按照相同命名.txt取“标准差最大”原则重新排列4000×10矩阵
(例如:8.txt的标准差在0-120五个文件夹中分别是1,2, 3, 4, 5,则取“120”文件夹中的8.txt。其他1-10.txt 与上相同,最终构成新的4000×10矩阵)
请教论坛Python专家,要怎么编写??感谢万分!
在数据文件夹t0根目录新建一个t0.py,使用下面代码,就可以达到任务要求:
import pandas as pd
import numpy as np
import os
#读取并处理数据
m=[]
n=[]
vl=[]
for root,dirs,fn in os.walk(r'F:\2022\py01\t0'):
for fi in fn:
if fi.endswith('.txt'):
f=os.path.join(root,fi)
d=pd.read_csv(f,header=None).astype(float)
m.append(os.path.dirname(f).rsplit('\\')[-1])
n.append(fi)
vl.append(d.values.std())
df=pd.DataFrame({'dirs':m,'filename':n,'std':vl})
m=df.groupby(['filename'])['std'].max()
df1=df[df['std'].isin(m.values)].sort_values(by='filename')
#构成需要的数据框
data=pd.DataFrame()
for d,f in zip(df1['dirs'],df1['filename']):
with open(os.path.join(d,f),'r') as fs:
df0=pd.read_csv(fs,header=None,names=[f])
data=pd.concat([data,df0],axis=1,ignore_index=False)
print(data)
print(np.mat(data))
运行结果示例:
F:\2022\py01\t0>t0
1.txt 2.txt 3.txt
0 2231 1201 1215
1 2541 1540 2541
2 3625 1478 2365
...
[[2231 1201 1215]
[2541 1540 2541]
[3625 1478 2365]
...
如有帮助,请点采纳。