форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
43 строки
1.5 KiB
Python
43 строки
1.5 KiB
Python
import matplotlib.pyplot as plt
|
|
import math
|
|
import statistics
|
|
def func1(sps):
|
|
variation_series = sorted(list(sps))
|
|
mean_val = statistics.mean(variation_series)
|
|
median_val = statistics.median(variation_series)
|
|
if len(variation_series) > 1:
|
|
std_val = statistics.stdev(variation_series)
|
|
else:
|
|
std_val = 0
|
|
params = [mean_val, median_val, std_val]
|
|
return variation_series, params
|
|
|
|
def func2(sps, nint):
|
|
data = list(sps)
|
|
min_val = min(data)
|
|
max_val = max(data)
|
|
interval_width = (max_val - min_val) / nint
|
|
bins = [min_val + i * interval_width for i in range(nint + 1)]
|
|
hist = []
|
|
bin_edges = []
|
|
for i in range(nint):
|
|
bin_start = bins[i]
|
|
bin_end = bins[i + 1]
|
|
if i == nint - 1:
|
|
count = sum(1 for x in data if bin_start <= x <= bin_end)
|
|
else:
|
|
count = sum(1 for x in data if bin_start <= x < bin_end)
|
|
hist.append(count)
|
|
bin_edges.append((bin_start, bin_end))
|
|
plt.figure(figsize=(10, 6))
|
|
plt.hist(data, bins=nint, edgecolor='black', alpha=0.7)
|
|
plt.title(f'Гистограмма выборки ({nint} интервалов)')
|
|
plt.xlabel('Значения')
|
|
plt.ylabel('Частота')
|
|
plt.grid(True, alpha=0.3)
|
|
plt.text(0.02, 0.98, f'Интервалов: {nint}', transform=plt.gca().transAxes,
|
|
verticalalignment='top', bbox=dict(boxstyle='round', facecolor='wheat', alpha=0.5))
|
|
plt.show()
|
|
histogram_result = [bin_edges, hist]
|
|
return histogram_result
|