读取当前目录下的csv,将csv文件的每列按窗口切片,计算均值、方差,有效值、rms、偏度、峭度、波形因子、峰值因子、脉冲因子、裕度因子等时频域参数,生成csv文件后存储到名字为时频域特征csv目录下,并按原csv文件名+列命名
时间: 2023-12-28 08:34:08 浏览: 96
你可以使用Python的pandas和numpy库来实现这个任务。以下是一个示例代码:
```python
import os
import pandas as pd
import numpy as np
import pywt
# 定义窗口大小和步长
window_size = 100
step_size = 50
# 获取当前目录路径
current_dir = os.getcwd()
# 创建时频域特征csv目录
feature_dir = os.path.join(current_dir, '时频域特征csv目录')
if not os.path.exists(feature_dir):
os.makedirs(feature_dir)
# 获取当前目录下的csv文件
csv_files = [file for file in os.listdir(current_dir) if file.endswith('.csv')]
# 循环处理每个csv文件
for file in csv_files:
# 读取csv文件
df = pd.read_csv(os.path.join(current_dir, file))
# 获取原始数据的列名
column_names = df.columns
# 创建新的DataFrame用于存储结果
result_df = pd.DataFrame(columns=[f'{file}_{col}_mean' for col in column_names] +
[f'{file}_{col}_var' for col in column_names] +
[f'{file}_{col}_rms' for col in column_names] +
[f'{file}_{col}_skew' for col in column_names] +
[f'{file}_{col}_kurtosis' for col in column_names] +
[f'{file}_{col}_crest' for col in column_names] +
[f'{file}_{col}_peak' for col in column_names] +
[f'{file}_{col}_impulse' for col in column_names] +
[f'{file}_{col}_margin' for col in column_names])
# 对每列进行窗口切片、计算统计指标和时频域参数
for col in column_names:
col_data = df[col]
num_windows = (len(col_data) - window_size) // step_size + 1
for i in range(num_windows):
window_data = col_data[i * step_size: i * step_size + window_size]
# 计算均值和方差
mean_value = np.mean(window_data)
var_value = np.var(window_data)
# 计算有效值
rms_value = np.sqrt(np.mean(window_data ** 2))
# 计算偏度和峭度
skewness = pd.Series(window_data).skew()
kurtosis = pd.Series(window_data).kurt()
# 计算波形因子、峰值因子、脉冲因子和裕度因子
crest_factor = np.max(np.abs(window_data)) / rms_value
peak_factor = np.max(window_data) / rms_value
impulse_factor = np.max(np.abs(window_data)) / np.mean(np.abs(window_data))
margin_factor = np.max(np.abs(window_data)) / np.std(window_data)
# 将结果添加到新的DataFrame
row = [mean_value] + [var_value] + [rms_value] + [skewness] + [kurtosis] + \
[crest_factor] + [peak_factor] + [impulse_factor] + [margin_factor]
result_df.loc[i] = row
# 将结果保存为新的csv文件
result_file = f'{file}_result.csv'
result_path = os.path.join(feature_dir, result_file)
result_df.to_csv(result_path, index=False)
print("时频域特征csv文件生成完成")
```
以上代码会在当前目录下读取所有的csv文件,并对每列进行窗口切片,计算均值、方差、有效值、RMS、偏度、峭度、波形因子、峰值因子、脉冲因子和裕度因子等时频域参数。然后将结果保存到名为'时频域特征csv目录'的文件夹下,并按原csv文件名+列命名。请确保在当前目录下存在'时频域特征csv目录'文件夹。
阅读全文