【问题标题】:How to calculate moving average for temperature?如何计算温度的移动平均值?
【发布时间】:2020-11-19 23:31:45
【问题描述】:

这是我需要的输出:

Temperature anomaly filename:SacramentoTemps.csv
Enter window size:60
1940,-0.2331
1941,-0.2169
1942,-0.2150
1943,-0.2228
1944,-0.2107
1945,-0.1796
1946,-0.1667
1947,-0.1582
1948,-0.1585
1949,-0.1492
1950,-0.1711
1951,-0.1688
1952,-0.1490
1953,-0.1556
1954,-0.1548
1955,-0.1580
1956,-0.1420
1957,-0.1101
1958,-0.1017

这是我的代码:

filename = input("Temperature anomaly filename:")
infile = open(filename, "r")
k = int(input("Enter window size:"))
infile.readline()

temp_list = []


for line in infile:
   line = line.strip()
   year,temp = line.split(",")
   temp = float(temp)
   temp_list.append(temp)

    index = k
for index in range(index,len(temp_list)-1-index):
    year = 1880 + index
    ave = sum(temp_list[index:index+k]) / (2*index+1)
    print(str(year)+","+"{:.4f}".format(ave))
infile.close()

我的代码目前打印到 1957 年,并且每年打印出错误的平均值。我需要解决什么问题?

【问题讨论】:

  • 您能否通过向“temp_list = []”添加一些值来稍微改变您的问题(而不是从文本文件中读取,这样更容易重新生成)。?
  • 理想情况下,temp_list 中应该有足够的值来匹配您想要的输出。

标签: python moving-average


【解决方案1】:
filename = "SacramentoTemps.csv"
infile = open(filename, "r")
k = int(input("Enter window size:"))

temp_list = []
for line in infile:
    line = line.strip()
    year, temp = line.split(",")
    temp = float(temp)
    temp_list.append(temp)
infile.close()

moving_average = []
for i, temp in enumerate(temp_list):
    average = temp
    if len(temp_list) - i < k:
        break
    for j in range(k):
        average += temp_list[i+j]
    moving_average.append(average/k)
    
    print(str(year) + "," + "{:.4f}".format(average))

我的编码方向是尽可能少地修改您的代码。 需要注意的一件事是您的文件需要比窗口大小长。

【讨论】:

    【解决方案2】:

    使用 pandas 是最明智的选择:

    import pandas as pd
    filename = "SacramentoTemps.csv"
    window  = 2
    data = pd.read_csv(filename)
    data.temperature.rolling(window = window).mean().fillna(data.temperature)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多