首页 > 解决方案 > 我如何从大量数据中提取特定的行集以查找统计操作。每组两边都加1?

问题描述

我想从大型数据集(.mat)中找到一些统计操作,例如平均值、中位数、标准差和方差。假设它包含 1000*1。
在这里,想为每 10 行找到平均值和中值等并将其保存在新列中。IE,

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

已签入堆栈门户。但我没有发现双方都增加了并找到了这些功能。请帮助我。

标签: pythonpython-3.xpandasstatistics

解决方案


Pandas 通过以下方式提供开箱即用的滚动统计信息DataFrame.rolling;如果,例如,values

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

然后您可以使用以下方法获得四个所需的统计信息集合

values.rolling(window=10).agg([np.mean, np.median, np.var, np.std])

推荐阅读