簡體   English   中英

將簡單的移動平均值作為附加列添加到python DataFrame

[英]Adding simple moving average as an additional column to python DataFrame

我在sales_training.csv中有如下銷售數據:

time_period sales
1   127
2   253
3   123
4   253
5   157
6   105
7   244
8   157
9   130
10  221
11  132
12  265

我想添加包含移動平均值的第三列。 我的代碼-

import pandas as pd
df = pd.read_csv("./Sales_training.csv", index_col="time_period")
periods = df.index.tolist()
period = int(input("Enter a period for the moving average :"))
sum1 = 0
for i in periods:
    if i < period:
        df['forecast'][i] = i
    else:
        for j in range(period):
            sum1 += df['sales'][i-j]
        df['forecast'][i] = sum1/period
        sum1 = 0
print(df)
df.to_csv("./forecast_mannual.csv")

這在行df['forecast'][i] = i處給出了KeyError: 'forecast' 有什么問題

一個簡單的解決方案,只需df['forecast'] = df['sales']

import pandas as pd
df = pd.read_csv("./Sales_training.csv", index_col="time_period")
periods = df.index.tolist()
period = int(input("Enter a period for the moving average :"))
sum1 = 0
df['forecast'] = df['sales'] # add one line
for i in periods:
    if i < period:
        df['forecast'][i] = i
    else:
        for j in range(period):
            sum1 += df['sales'][i-j]
        df['forecast'][i] = sum1/period
        sum1 = 0
print(df)
df.to_csv("./forecast_mannual.csv")

您的代碼給出'keyerror'是因為引用'forecast'的列值的方式不正確。由於您的代碼是第一次運行,因此'forecast'列尚未創建,當它嘗試為第一次迭代引用df'forecast '時,它給出了關鍵錯誤。

在這里,我們的任務是更新動態創建的稱為“預測”的新列中的值。 因此,您可以編寫df.at [i,'forecast']代替df ['forecast'] [i]。

代碼中還有另一個問題。當i的值小於周期時,您將分配``i''來預測我認為不正確的預測,在這種情況下它不應顯示任何內容。

這是我的更正代碼版本:

 import pandas as pd df = pd.read_csv("./sales.csv", index_col="time_period") periods = df.index.tolist() period = int(input("Enter a period for the moving average :")) sum1 = 0 for i in periods: print(i) if i < period: df.at[i,'forecast'] = '' else: for j in range(period): sum1 += df['sales'][ij] df['forecast'][i] = sum1/period sum1 = 0 print(df) df.to_csv("./forecast_mannual.csv") 

當我輸入period = 2來計算移動平均值時的輸出:

在此處輸入圖片說明

希望這可以幫助。

暫無
暫無

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

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