python - 我如何从大量数据中提取特定的行集以查找统计操作。每组两边都加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
已签入堆栈门户。但我没有发现双方都增加了并找到了这些功能。请帮助我。
解决方案
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])
推荐阅读
- css - 如何将最大宽度大于 100% 的 iframe 居中对齐以裁剪一些 iframe 宽度?
- javascript - 如何获取在 Jquery UI 的日历中选择的当天元素?
- c# - 如何使用两个组合框过滤 datagridview
- ruby-on-rails - 参数 ID - 找不到具有 id 的类别
- c# - 在 C# 中重新订阅自定义事件表示事件名称不在当前上下文中
- python - 为什么马尔可夫链会重演?
- python - 训练和测试集上的虚拟变量导致不同大小的数据帧输出
- autohotkey - Ctrl+V 和 Powerpoint 2010
- javascript - 如何使用 jQuery 获取特定的类?
- reactjs - Material UI 中表格中的尖角