【问题标题】:Numpy Array count occurrences based on multiple filters [closed]基于多个过滤器的 Numpy 数组计数出现 [关闭]
【发布时间】:2022-08-19 15:07:33
【问题描述】:

我试图通过使用第一个过滤器然后计算第二列的出现次数来计算 NumPy 数组的出现次数。

数据集信息:

data_dict = {
    \'Outlook\' : [\'Sunny\', \'Sunny\', \'Overcast\', \'Rainy\', \'Rainy\', \'Rainy\', \'Overcast\', \'Sunny\', \'Sunny\',\'Rainy\', \'Sunny\', \'Overcast\', \'Overcast\', \'Rainy\']
    ,\'Temperature\': [\'Hot\', \'Hot\', \'Hot\', \'Mild\', \'Cool\', \'Cool\', \'Cool\', \'Mild\', \'Cool\', \'Mild\',\'Mild\',\'Mild\', \'Hot\', \'Mild\']
    ,\'Humidity\' : [\'High\', \'High\', \'High\', \'High\', \'Normal\', \'Normal\', \'Normal\', \'High\',\'Normal\',\'Normal\', \'Normal\', \'High\', \'Normal\', \'High\']
    ,\'Wind\': [\'False\', \'True\', \'False\', \'False\', \'False\', \'True\', \'True\', \'False\', \'False\', \'False\', \'True\', \'True\', \'False\', \'True\']
    ,\'label\': [\'No\', \'No\', \'Yes\', \'Yes\', \'Yes\', \'No\', \'Yes\', \'No\', \'Yes\', \'Yes\', \'Yes\', \'Yes\', \'Yes\', \'No\']
}

结果数据框:

    Outlook Temperature Humidity   Wind label
0     Sunny         Hot     High  False    No
1     Sunny         Hot     High   True    No
2  Overcast         Hot     High  False   Yes
3     Rainy        Mild     High  False   Yes
4     Rainy        Cool   Normal  False   Yes
...

我想得到以下信息:

Outlook    No Yes All 
Sunny      2   3   5         
Overcast   4   0   4
Rain       3   2   5

这是我的代码尝试(但是它分别总结了每一列):

result = np.where(df.columns.values == \'label\')
result1 = np.where(df.columns.values == \'Outlook\')
lst = rows[:, [result, result1]]
uni, data = np.unique(lst, return_counts=True)
  • 我认为这个问题是缺失的。或者,请考虑在codereview.stackexchange.com 上发帖进行审核。
  • @JérômeRichard,问题是我如何将信息纳入总体计数“实例数”并计算每个 Outlook 标准(如晴天、阴天和雨天)的“是”和“否”?
  • 通过我的尝试,我只能得到每列“array([5, 4, 5, 5, 9], dtype=int64)\" 的每个唯一项目的总数,因为您可以看到前 3 个项目来自 Outlook 列和最后两个来自标签列。根据上面的表格示例,我想得到类似的结果。

标签: python numpy


【解决方案1】:

您可以使用数据透视表:

pd.pivot_table(
    df,
    values="Day",
    index="Outlook",
    columns="label",
    aggfunc="count",
    margins=True,
    fill_value=0,
)

结果是:

         Day        
label     No Yes All
Outlook             
Overcast   0   4   4
Rainy      2   3   5
Sunny      3   2   5
All        5   9  14

文档是here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-08
    • 2019-07-07
    • 1970-01-01
    • 2021-06-24
    • 2022-01-09
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    相关资源
    最近更新 更多