我必須撰寫一個函式(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
它沒有按預期作業。你能幫我告訴我,我的錯誤是什么?
先感謝您。
uj5u.com熱心網友回復:
您正在迭代 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
如果你只想成為一個整數而不是浮點數,你可以這樣做sum(df[i]) // df.shape[0]
我希望這回答了你的問題。
uj5u.com熱心網友回復:
你想要每列的平均值嗎?如果它們的長度不完全相同,則必須小心:
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()
uj5u.com熱心網友回復:
將第一個更改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
uj5u.com熱心網友回復:
如果您唯一不允許使用的是該df.mean()功能,那么您可以這樣做:
def column_means(df):
return df.sum(axis=0).div(df.shape[0]).to_list()
對列求和,將結果除以行數,然后將其轉換為串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/467783.html
上一篇:將x個相同大小的2Dnumpy陣列轉換為2 x列資料框
下一篇:將多個資料框與pandas組合
