2026-03-20 20:32:11 +00:00
|
|
|
|
import pandas as pd
|
2026-03-21 15:21:24 +00:00
|
|
|
|
import glob
|
|
|
|
|
|
import re
|
|
|
|
|
|
import os
|
2026-03-20 20:32:11 +00:00
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
from matplotlib.ticker import AutoMinorLocator
|
|
|
|
|
|
import numpy as np
|
|
|
|
|
|
from scipy.interpolate import interp1d, CubicSpline
|
|
|
|
|
|
from scipy.optimize import curve_fit
|
|
|
|
|
|
from numpy.polynomial import Polynomial
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-21 15:21:24 +00:00
|
|
|
|
folder_path = 'results'
|
|
|
|
|
|
|
|
|
|
|
|
# 2. Список размеров (500, 1000, 2000, 5000, 10000)
|
|
|
|
|
|
sizes = ['500', '1000', '2000', '5000', '10000']
|
|
|
|
|
|
|
|
|
|
|
|
for size in sizes:
|
|
|
|
|
|
files = glob.glob(os.path.join(folder_path, f'timedata_{size}_epochs_*.csv'))
|
|
|
|
|
|
|
|
|
|
|
|
if not files:
|
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
# Читаем файлы
|
|
|
|
|
|
dfs = [pd.read_csv(f) for f in files]
|
|
|
|
|
|
|
|
|
|
|
|
# 1. Определяем, какие колонки текстовые (не числовые)
|
|
|
|
|
|
# Предполагаем, что во всех файлах они одинаковые
|
|
|
|
|
|
text_cols = dfs[0].select_dtypes(exclude=['number']).columns.tolist()
|
|
|
|
|
|
|
|
|
|
|
|
# 2. Объединяем и считаем среднее
|
|
|
|
|
|
# Группируем по текстовым колонкам, чтобы они остались в результате
|
|
|
|
|
|
if text_cols:
|
|
|
|
|
|
combined = pd.concat(dfs)
|
|
|
|
|
|
mean_df = combined.groupby(text_cols).mean().reset_index()
|
|
|
|
|
|
else:
|
|
|
|
|
|
# Если текста нет, просто среднее по строкам
|
|
|
|
|
|
mean_df = pd.concat(dfs).groupby(level=0).mean()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
output_name = f'average_timedata_{size}.csv'
|
|
|
|
|
|
mean_df.to_csv(os.path.join(folder_path, output_name), index=False)
|
|
|
|
|
|
print(f"Файл {output_name} успешно создан")
|
2026-03-20 20:32:11 +00:00
|
|
|
|
|
|
|
|
|
|
# построение графика
|
|
|
|
|
|
# fig, ax = plt.subplots(figsize=(8, 5))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ax.set_title("График зависимости фазы от частоты(сх5)")
|
|
|
|
|
|
# ax.set_xlabel("v, Hz")
|
|
|
|
|
|
# ax.set_ylabel("phi, rad")
|
|
|
|
|
|
# ax.grid(which="major", linewidth=1.5)
|
|
|
|
|
|
# ax.grid(which="minor", color="gray", linewidth=0.5)
|
|
|
|
|
|
# ax.xaxis.set_minor_locator(AutoMinorLocator())
|
|
|
|
|
|
# ax.yaxis.set_minor_locator(AutoMinorLocator())
|
|
|
|
|
|
# ax.axhline(y=0, color='black', linewidth=1, linestyle='-', alpha=0.7) # Ось X (U=0)
|
|
|
|
|
|
# ax.axvline(x=0, color='black', linewidth=1, linestyle='-', alpha=0.7) # Ось Y (B=0)
|
|
|
|
|
|
# ax.plot(1, 0, ">k", transform=ax.get_yaxis_transform(), clip_on=False)
|
|
|
|
|
|
# ax.plot(0, 1, "^k", transform=ax.get_xaxis_transform(), clip_on=False)
|
|
|
|
|
|
# ax.legend()
|
|
|
|
|
|
# plt.savefig('graphics\zadanie3.png', dpi=200)
|
|
|
|
|
|
# plt.savefig('graphics\zadanie3.eps', dpi=200)
|
|
|
|
|
|
# plt.show()
|