将文件夹子子文件夹中csv数据,将第一列进行时EMD分解处理,把原始信号分解出三个IMF,处理好的数据写入新csv中的每一列。
时间: 2024-04-21 12:22:20 浏览: 133
好的,我理解了您的需求。下面是一个修改后的代码示例,可以将文件夹及其子文件中的 CSV 数据的第一列进行时域经验模态分解(EMD),然后将处理后的数据分别写入到新的 CSV 文件的每一列。
```python
import os
import pandas as pd
from pyhht.emd import EMD
def emd_processing(input_folder, output_file):
# 获取文件夹及其子文件夹中的所有 CSV 文件路径
csv_files = []
for root, dirs, files in os.walk(input_folder):
for file in files:
if file.endswith(".csv"):
csv_files.append(os.path.join(root, file))
# 创建一个字典,用于存储每个列的处理结果
processed_data = {}
# 遍历所有 CSV 文件
for file_path in csv_files:
# 读取 CSV 文件
df = pd.read_csv(file_path)
# 获取第一列数据
column_data = df.iloc[:, 0]
# 对第一列进行 EMD 分解处理
emd = EMD()
imfs = emd(column_data)
# 将分解后的 IMF 数据存储到字典中
for i, imf in enumerate(imfs):
new_column_name = f"IMF{i+1}"
if new_column_name not in processed_data:
processed_data[new_column_name] = []
processed_data[new_column_name].extend(imf)
# 将处理后的数据写入新的 CSV 文件的每一列
df_output = pd.DataFrame(processed_data)
df_output.to_csv(output_file, index=False)
# 设置输入和输出路径
input_folder = "your_input_folder_path"
output_file = "your_output_file_path.csv"
# 调用 emd_processing 函数处理数据
emd_processing(input_folder, output_file)
```
在上述代码中,我使用了 `pandas` 库来读取和写入 CSV 文件。对于每个 CSV 文件,我提取了第一列的数据,并对其进行 EMD 分解处理。然后,我将分解后的 IMF 数据存储到一个字典中,并使用 `pd.DataFrame` 将字典转换为 DataFrame。最后,我将处理后的数据写入到新的 CSV 文件中。
请确保您将 `"your_input_folder_path"` 替换为实际的输入文件夹路径,将 `"your_output_file_path.csv"` 替换为实际的输出文件路径。
希望这次能满足您的需求。如果有任何问题,请随时提问。
阅读全文