Как я могу извлечь для конкретного набора строк из большого набора данных, чтобы найти статистические операции.Каждый набор увеличивается на 1 в обе стороны? - PullRequest
0 голосов
/ 10 июня 2018

Я хотел бы найти некоторые статистические операции, такие как среднее значение, медиана, стандартное отклонение и дисперсия из большого набора данных (.mat).Допустим, он содержит 1000 * 1.
Здесь, мы хотели бы найти для каждых 10 строк найти среднее и медиану и т. Д. И сохранить его в новом столбце.то есть

1 to 10 rows has mean value is x.
2 to 11 rows has mean then value is x.     
....................................................
...................................................
untill 989 to 999 mean value is x.  
last row(1000) is eleiminated.   

аналогично медиане, стандартному значению и т. д., эти значения сохраняются в col1 (среднее значение);col2 (медиана), col3 (отклонение) и col4 (стандартное отклонение).Я могу решить эти функции для всего моего набора данных.Но здесь каждый раз, когда индекс увеличивается на 1 в обоих направлениях!

если я напишу среднее, медиану ... функции в самом цикле FOR или отдельно.Можете ли вы привести мне какой-нибудь пример !!!

Это мой код !!!Но не везет в вывод.

mat1 = scipy.io.loadmat('E:\PythonPr\DeepLearningPr\zerosnmri.mat')     
mat2 = scipy.io.loadmat('E:\PythonPr\DeepLearningPr\zerosnmriattack.mat')  #

#Feature selection
def mean(values):
   length = len(values)
   total_sum = 0
   for i in range(length):
       total_sum += values[i]
   total_sum = sum(values)
  avg = total_sum*1.0/length
  return avg

n = np.mean(mat1)
#print(n)
m = statistics.variance(mat2)
#print(m)

def stanDev (values):
   length = len(values)
   m = mean(values)
   total_sum = 0
   for i in range(length):
       total_sum += (values(i)-m)**2
   under_root = total_sum*1.0/length

Уже проверено в стеке портала.Но я не нашел увеличенных в обе стороны и не нашел этих возможностей.Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 10 июня 2018

Панды поставляются со скользящей статистикой из коробки, например, DataFrame.rolling;например, если values задано как

values = pd.Series(np.random.uniform(size=1000))

, то вы можете получить четыре желаемых набора статистики, используя

values.rolling(window=10).agg([np.mean, np.median, np.var, np.std])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...