如何在Pandas中计算加权平均数

如何在Pandas中计算加权平均数

加权平均数是一种考虑数据集合中整数的相对值的计算。在计算加权平均数时,数据集中的每个值在完成最终计算之前都要按预定的权重进行缩放。

语法:

def weighted_average(dataframe, value, weight):
    val = dataframe[value]
    wt = dataframe[weight]
    return (val * wt).sum() / wt.sum()
Python

它将返回该项目在价值上的加权平均值。在分子中,我们将每个值与相应的权重相乘,并将它们全部相加。在分母中,所有的权重都被加上。

步骤

  • 我们采取一个数据框架,或者自己制作一个数据框架。
  • 定义一个函数,通过上述公式计算出加权平均数。
  • 我们需要在数据框中至少有三个项目,即索引(可以是项目名称、日期或任何此类变量)、值和权重。
  • 我们将进行一个传递所有这三个值的函数调用。

示例 :

让我们看一个例子,计算按项目名称分组的价值的加权平均数。

假设有三家商店,每家商店有三种商品,即巧克力、冰淇淋和饼干。我们有每件商品的重量和每件商品在所有三家商店的价格。现在我们需要找出每种商品的加权平均数。

import pandas as pd
 
 
def weighted_average(dataframe, value, weight):
    val = dataframe[value]
    wt = dataframe[weight]
    return (val * wt).sum() / wt.sum()
 
 
# creating a dataframe to represent different
# items and their corresponding weight and value
dataframe = pd.DataFrame({'item_name': ['Chocolate', 'Chocolate',
                                        'Chocolate', 'Biscuit',
                                        'Biscuit', 'Biscuit',
                                        'IceCream', 'IceCream',
                                        'IceCream'],
                          'value': [90, 50, 86, 87, 42, 48,
                                    68, 92, 102],
                          'weight': [4, 2, 3, 5, 6, 5, 3, 7,
                                     5]})
 
# Weighted average of value  grouped by item name
dataframe.groupby('item_name').apply(weighted_average,
                                     'value', 'weight')
Python

输出 :

如何在Pandas中计算加权平均数?

使用 groupby()

在这里,我们将使用groupby()函数对项目进行分组,并通过使用sum函数对这些项目进行分组来计算权重。因此,通过使用这种方法,我们只是将相似的项目组成一个组来获得总和。

语法 :

def weighted_average_of_group(values, weights, item):
    return (values * weights).groupby(item).sum() / weights.groupby(item).sum()
Python

示例 :

import pandas as pd
 
 
def weighted_average_of_group(values, weights, item):
    return (values * weights).groupby(item).sum() / weights.groupby(item).sum()
 
 
# creating a dataframe to represent different items
# and their corresponding weight and value
dataframe = pd.DataFrame({'item_name': ['Chocolate', 'Chocolate', 'Chocolate',
                                        'Biscuit', 'Biscuit', 'Biscuit',
                                        'IceCream', 'IceCream', 'IceCream'],
                          'value': [90, 50, 86, 87, 42, 48, 68, 92, 102],
                          'weight': [4, 2, 3, 5, 6, 5, 3, 7, 5]})
 
# Finding grouped average of group
weighted_average_of_group(values=dataframe.value,
                          weights=dataframe.weight, item=dataframe.item_name)
Python

输出 :

如何在Pandas中计算加权平均数?

为了计算整个数据框架的加权平均数(不是每组的,而是整体的),我们将使用下面的语法。

语法

def weighted_average_of_whole_dataframe(dataframe, value, weight):
    val = dataframe[value]
    wt = dataframe[weight]
    return (val * wt).sum() / wt.sum()
Python

示例 :

import pandas as pd
 
 
def weighted_average(dataframe, value, weight):
    val = dataframe[value]
    wt = dataframe[weight]
    return (val * wt).sum() / wt.sum()
 
 
# creating a dataframe to represent different items
# and their corresponding weight and value
dataframe = pd.DataFrame({'item_name': ['Chocolate', 'Chocolate', 'Chocolate',
                                        'Biscuit', 'Biscuit', 'Biscuit',
                                        'IceCream', 'IceCream', 'IceCream'],
                          'value': [90, 50, 86, 87, 42, 48, 68, 92, 102],
                          'weight': [4, 2, 3, 5, 6, 5, 3, 7, 5]})
 
# Weighted average of whole dataframe as a whole
weighted_average(dataframe, 'value', 'weight')
Python

输出:

75.075
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册