python 小波降噪

#python
#小波降噪
用python对.csv数据文件进行小波降噪,发现这一行代码最终只对第11列数据生效了,range(1, 11)中11改成几就只对那一列数据生效,其他列没有变化,第一次接触实在搞不懂,求指点一下。

img

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7623555
  • 除此之外, 这篇博客: Python读取CSV成数据框并进行筛选和相关性检验中的 四、按列的值筛选 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 按一列的值进行筛选,比如筛选四年级的所有学生的分数

    df = data.loc[data['年级']== 4 ]
    

    按两列值进行筛选

    df4 = df.loc[(df['策略类别'] == "A" )&(df['语文类别'] == "B" )]
    
  • 以下回答由chatgpt基于相关博客总结生成:

    对于小波降噪中只有第11列受到影响的问题,可以检查一下循环中是否有对应的变量只使用了11,而未使用循环变量等可能原因。另外,可以尝试将小波变换和逆变换的过程分别写在不同的函数中,然后调用这些函数来实现对所有列的处理。

    import pywt
    import pandas as pd
    
    # 定义小波变换函数
    def wavelet_transform(data):
        wavelet = 'sym5'
        cA, cD = pywt.dwt(data, wavelet)
        return cA, cD
    
    # 定义逆变换函数
    def inverse_wavelet_transform(cA, cD, wavelet):
        data = pywt.idwt(cA, cD, wavelet)
        return data
    
    # 读取csv文件
    data = pd.read_csv('data.csv')
    
    # 使用循环对每一列进行处理
    for i in range(1, len(data.columns)):
        column_name = data.columns[i]
        cA, cD = wavelet_transform(data[column_name].tolist())
        reconstructed_data = inverse_wavelet_transform(cA, cD, 'sym5')
        data[column_name] = reconstructed_data.tolist()
    
    # 保存结果到新的csv文件中
    data.to_csv('processed_data.csv', index=False)
    

    对于计算一段时间内所有跑道的平均速度,可以先读取文件1(data.csv)中的开始时间和结束时间,再根据这个时间段,去对应的多个文件中读取对应时刻的速度数据。最后,将所有速度数据求平均,并添加到另外一个文件的新增列中。

    ```python import os import datetime import csv

    读取data.csv中的开始时间和结束时间

    with open('data.csv', 'r') as f: reader = csv.reader(f) start_time_str, end_time_str = next(reader)[1:]

    将时间字符串转化为datetime对象

    start_time = datetime.datetime.strptime(start_time_str, '%Y-%m-%d %H:%M:%S') end_time = datetime.datetime.strptime(end_time_str, '%Y-%m-%d %H:%M:%S')

    读取日期表中所有文件中的速度数据

    speed_data = [] file_names = os.listdir('./') for file_name in file_names: if file_name.startswith('1') or file_name.startswith('2'): with open(file_name, 'r') as f: reader = csv.reader(f) next(reader) for row in reader: time_str, speed_str = row # 将时间字符串转化为datetime对象 time = datetime.datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S') \ if '-' in time_str else datetime.datetime.strptime(time_str, '%Y/%m/%d %H:%M:%S')