计算每个 Dataframe 列的平均值

calculationg the mean from each Dataframe column

我必须编写一个函数 (column_means),计算 Dataframe 中每一列的 均值 并在最后给我一个均值列表。我不允许使用均值函数 .mean(),所以我正在实现均值的一般公式:sum(x_i)/元素数。

这是我的代码:

df = pd.DataFrame({'a':[1,2,3], 'b': [4,5,6]})
def column_means(df):
    means  = [] 
    for i,n in zip(df.columns,  df.shape[0]):
        means [n] = sum(df[i])/ df.shape[0]
    return means

它没有按预期工作。你能帮帮我,告诉我我的错误是什么吗?

提前致谢。

你想要每列的平均值吗?如果它们的长度不完全相同,您必须小心:

import pandas as pd

df = pd.DataFrame({'a':[1,2,3], 'b': [4,5,6]})

def column_means(df):
    means  = [] 
    for i,n in enumerate(df.columns):
        means.append(sum(df[n])/len(df[n]))
    return means

print(column_means(df))

也可以使用pd DataFrame的mean方法

df.mean()

您正在 zip 函数中迭代 int,因为 df.shape[0] 返回单个整数而不是可迭代数据类型。

所以你可以简单地做如下操作:

def column_means(df):
    means = []
    for i in df.columns:
        means.append(sum(df[i]) / df.shape[0])
    return means

如果你想让 mean 只是一个整数而不是浮点数,你可以只做 sum(df[i]) // df.shape[0]

我希望这能回答你的问题。

将第一个 df.shape[0] 更改为 df.index 和赋值行。

def column_means(df):
   means  = [] 
   for i,n in zip(df.columns,  df.index):
      means.append(sum(df[i])/ df.shape[0])
   return means