簡體   English   中英

Pandas 手動計算平均值或標准差

[英]Pandas calculate manually for mean or standard deviation

除了最小值和最大值之外,我們還需要 Kilometers_Driven 在不同位置的均值和方差。 使用迭代方法,執行以下操作:

查找數據集中的所有唯一位置。

啟動計時器。

對於唯一位置,遍歷數據集一次以計算 Kilometers_Driven 的平均值。

對於相同的唯一位置,再次遍歷數據集以計算 Kilometers_Driven 的方差。

8.5 對所有獨特的位置重復。 迭代地,計算不同位置的 Kilometers_Driven 的均值和方差。 測量所需的時間。

停止計時器。 打印出每個位置的 Kilometers_Driven 的均值和方差以及經過的時間。

我的代碼如下:

#8.1
df.Location.unique()

#8.2
start = timeit.default_timer()

#8.3 Calculating mean of "Kilometers_Driven" manually (For a unique location?)
col_mean = 0.0
for row in range(len(df)):
    col_mean += df.loc[row, "Kilometers_Driven"]
col_mean /= len(df)
print(col_mean)

#8.4 Calculating variance of "Kilometers_Driven" manually
col_var = 0.0
for row in range(len(df)):
    col_var += (df.loc[row, "Kilometers_Driven"] - col_mean)**2
col_var /= len(df) - 1 
print(col_var)

#8.5 How to do?

#8.6 Setting Stop Time
stop = timeit.default_timer()

t_custom = stop - start

print(f"Time elapsed {t_custom} s")

它有效,但對於一個獨特的位置,遍歷數據集一次以計算 Kilometers_Driven 的平均值。 在 8.3 中。 我只是手動計算“Kilometers_Driven”的平均值。我不知道如何糾正它。 並且不確定如何在 8.5 中提問。 任何人都可以幫助我嗎? 提前致謝!!

for l in list(df.Location.unique()): 
    col_mean = 0.0

    num_rows=0
    for row in range(len(df)):
        if df.loc[row, 'Location'] == l:
              num_rows += 1
              col_mean += df.loc[row, "Kilometers_Driven"]
    col_mean = col_mean/num_rows

    print( 'Location: %s mean %.2f' % (l, col_mean) )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM