Advertisement
Danila_lipatov

drop_lin_trand

Apr 2nd, 2024 (edited)
531
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.57 KB | None | 0 0
  1. import numpy as np
  2. import pandas as pd
  3. import matplotlib.pyplot as plt
  4.  
  5. # Загрузка данных из файла CSV
  6. file_path = 'data.csv'
  7. data = pd.read_csv(file_path)
  8.  
  9. # Определение временной переменной
  10. time_column = 'Time'  # Замените 'Time' на название временной переменной в вашем файле CSV
  11.  
  12. # Выделение значений времени и соответствующих данных
  13. time_values = data[time_column]
  14. data_values = data.drop(columns=[time_column])
  15.  
  16. # Удаление линейного тренда
  17. def remove_trend(data):
  18.     x = np.arange(len(data))
  19.     slope, intercept = np.polyfit(x, data, 1)
  20.     trend = slope * x + intercept
  21.     detrended_data = data - trend
  22.     return detrended_data
  23.  
  24. detrended_data = data_values.apply(remove_trend, axis=0)
  25.  
  26. # Сохранение обработанных данных в новый файл CSV
  27. detrended_data.to_csv('detrended_data.csv', index=False)
  28.  
  29. # Визуализация исходных и обработанных данных для одного измерения
  30. plt.figure(figsize=(10, 6))
  31. plt.plot(time_values, data_values.iloc[:, 0], label='Исходные данные', color='blue')
  32. plt.plot(time_values, detrended_data.iloc[:, 0], label='Обработанные данные (без тренда)', color='red')
  33. plt.xlabel('Время')
  34. plt.ylabel('Значение')
  35. plt.title('Удаление линейного тренда из данных')
  36. plt.legend()
  37. plt.grid(True)
  38. plt.show()
  39.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement