Чтение из нескольких файлов на Python и сохранение их одного за другим в другом каталоге

#python-3.x #pandas #numpy #glob #lowpass-filter

#python-3.x #pandas #numpy #глобус #фильтр нижних частот

Вопрос:

     import glob
    import pandas as pd
    import seaborn as sns
    import numpy as np
    from scipy import signal
    import matplotlib.pyplot as plt
    
    files = glob.glob("Angular_position_*_*.csv")
    output = pd.DataFrame()
    
    for f in files:
        df = pd.read_csv(f)
        time = df.iloc[:,0]
        time = time.to_numpy()
        ynew = df.iloc[:,1:]
        ynew = ynew.to_numpy()
        
    
        lowPassCutoffFreq = 6.0 # Cut off frequency
        Sample_freq = 150; #Target sample frequency
        N = 2 # Order of the filter; In this case 2nd order
        Wn = lowPassCutoffFreq/(Sample_freq/2)  #Normalize frequency
    
        b, a = signal.butter(5, Wn, btype='low',analog=False,output='ba')
        #scipy.signal.butter(N, Wn, btype='low', analog=False, output='ba', fs=None)
    
        output = signal.filtfilt(b, a, ynew, axis=0)
        
     
        np.savetxt("enter directory path/Filtered_files/Filtered_Angular_position_*_*", output,   delimiter = ', ', newline = "n")
  

Я пытаюсь прочитать все файлы в каталоге, затем они фильтруются по нижним частотам. После этого результаты сохраняются один за другим, но не в одном файле. В результате каждый файл содержит по 3 столбца, и в идеале я хотел бы, чтобы им присваивались имена с заголовками, например col1, col2, col3.

Без использования glob я могу фильтровать все мои файлы по отдельности, но у меня более 100 таких файлов.

Буду признателен за любую помощь.

наилучшие пожелания,

Ответ №1:

Я частично решил проблему, кроме имен заголовков:

 import glob
import pandas as pd
from tnorma import tnorma
import seaborn as sns
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

path = r'location_of_dir'

all_files = glob.glob(path   '/*.csv')
# yn = np.zeros(shape = (101,1))
# tn = np.zeros(shape = (101,1))
#ynew = []

yn = np.zeros(shape = (101,1))

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    print(filename)
    foo = filename.split("/")[-1]
    #df = pd.read_csv(f)
    time = df.iloc[:,0]
    time = time.to_numpy()
    ynew = df.iloc[:,1:]
    ynew = ynew.to_numpy()
    #print(ynew)

    lowPassCutoffFreq = 6.0 # Cut off frequency
    Sample_freq = 150; #Target sample frequency
    N = 2 # Order of the filter; In this case 2nd order
    Wn = lowPassCutoffFreq/(Sample_freq/2)  #Normalize frequency

    b, a = signal.butter(5, Wn, btype='low',analog=False,output='ba')
    #scipy.signal.butter(N, Wn, btype='low', analog=False, output='ba', fs=None)

    output = signal.filtfilt(b, a, ynew, axis=0)
    #print (output)
    tn = np.linspace(0, 100, 101)     # new time vector for the new time-normalized data
    yn, tn, indie = tnorma(output, k=3, smooth =1, mask = None, show = False)
    
    np.savetxt("path_name/foldername/file"  foo, yn, delimiter = ', ', newline = "n")
  

Однако у меня возникают трудности с размещением имен заголовков в 3 столбцах на файл.