【问题标题】:Filter, group, and calculate statistics for Numpy matrix data过滤、分组和计算 Numpy 矩阵数据的统计数据
【发布时间】:2014-01-06 01:37:33
【问题描述】:

我有一个使用 Numpy 读取制表符分隔的文本文件创建的矩阵,它看起来像这样:

sample  category_a  category_b  value
------  ----------  ----------  -----
1       A           Z           3.92
2       A           Y           12.43
3       B           Z           5.87
4       B           Y           6.71
etc...

我想过滤或分组数据以执行一些基本统计,例如计算单个类别或类别组合的每个值的平均值。不幸的是,我是 Numpy 的新手,并且在文档中没有看到对此类功能的任何明显参考。是否可以按类别对矩阵数据进行分组并执行计算?或者我需要在从文件中读取数据时过滤进入矩阵的数据然后进行计算?

【问题讨论】:

标签: python numpy matrix statistics


【解决方案1】:

作为 cmets 的补充,您可以在 pandas 中非常简单地这样做:

首先我导入您的示例数据(当然这取决于您的数据的样子):

import pandas as pd
from StringIO import StringIO
s = """sample  category_a  category_b  value
1       A           Z           3.92
2       A           Y           12.43
3       B           Z           5.87
4       B           Y           6.71"""

df = pd.read_csv(StringIO(s), sep="\s+", index_col=0)

你得到以下数据帧:

In [7]: df
Out[7]:
       category_a category_b  value
sample
1               A          Z   3.92
2               A          Y  12.43
3               B          Z   5.87
4               B          Y   6.71

现在,要按类别对数据进行分组并取每组的平均值,您可以这样做:

In [5]: df.groupby('category_a').mean()
Out[5]:
            value
category_a
A           8.175
B           6.290

或者按多个类别进行分组(在这个虚拟示例中,取平均值当然不多,因为每个组中只有一个值):

In [6]: df.groupby(['category_a', 'category_b']).mean()
Out[6]:
                       value
category_a category_b
A          Y           12.43
           Z            3.92
B          Y            6.71
           Z            5.87

【讨论】:

  • 谢谢,这正是我想要的!
猜你喜欢
  • 1970-01-01
  • 2022-11-05
  • 2016-12-07
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多