【问题标题】:How to get the Average of a specific category via Python如何通过 Python 获取特定类别的平均值
【发布时间】:2016-07-30 17:19:27
【问题描述】:

我想知道如何通过 Python 计算特定类别的平均值?我有一个名为 demo.csv 的 csv 文件

 import pandas as pd
 import numpy as np

#loading the data into data frame
X = pd.read_csv('demo.csv')

感兴趣的两列是CategoryTotals 列:

Category Totals estimates
2   2777    0.43
4   1003    0.26
4   3473    0.65
4   2638    0.17
1   2855    0.74
0   2196    0.13
0   2630    0.91
2   2714    0.39
3   2472    0.51
0   1090    0.12

我有兴趣找到与 Category 2 对应的总计的平均值。我知道如何在 excel 上执行此操作,我只需过滤以仅显示类别 2 并获得平均值(最终为 2745.5)但是我如何通过 Python 编写代码呢?

【问题讨论】:

  • sum(x[1]) / len(x[1]) ? x[1] 会是一个列表/元组或类似的东西吗?

标签: python csv pandas average


【解决方案1】:

您可以将数据框限制为所需行的子集(Category=2),然后取与Totals 列对应的列的平均值,如下所示:

df[df['Category'] == 2]['Totals'].mean()
2745.5

【讨论】:

  • 我会使用索引器(看起来更好一点):df.ix[df['Category'] == 2, 'Totals'].mean()
【解决方案2】:

我有兴趣找到与类别 2 对应的总计的平均值

您可以将类别设置为索引,然后使用.loc.ix 索引器计算任何类别的平均值:

df.set_index('Category').loc['2', 'Totals'].mean()
=> 2745.50

df.set_index('Category').ix['2', 'Totals'].mean()
=> 2745.50

同样可以使用groupby实现

df.groupby('Category').Totals.mean().loc['2']
=> 2745.50

注意我假设Category 是一个字符串。

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 2021-01-10
    • 2021-02-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多