Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

python Part 2 Calculate the moving average. (40 points) Start a new program temp_win2.py from your working version of temp_win1.py. Since you know that you

python

Part 2 Calculate the moving average. (40 points)

Start a new program temp_win2.py from your working version of temp_win1.py.

Since you know that you are correctly getting the file name and the window parameter from the user, you can now comment out the lines that print:

Analyzing NorCal-1880-2018.csv
Using 60 for the window parameter.

Before calculating the moving average you will need to read the temperature data into a list so your program can read the same value over and over when sliding the window for the moving average. Change the loop in your program that reads the year and temperature data from the file into two lists: a list holding the years and a list holding the floating point temperatures. These lists will make it possible to repeatedly access the data when computing the average.

Moving average calculation

The moving average at position i in the list is calculated as the sum of the temperature values from position i-k to position i+k divided by the total width of the window (2*k + 1). Below is an example of the calculation for k = 5 and i = 5.

The boxed below illustrate a window at position i = 5 with width k = 5 in the temps list:

sliding window:

i-5

i-4

i-3

i-2

i-1

i

i+1

i+2

i+3

i+4

i+5

temps values:

0.59

0.41

0.34

-0.22

1.03

0.23

-0.06

-0.40

0.48

2.63

0.18

temps indices:

0

1

2

3

4

5

6

7

8

9

10

ave = (temps[i-k] + ...temps[i-1] + temps[i] + temps[i+1]... + temps[i+k])/(2*k+1)

year = years[i]

Your calculation will not look exactly like this. You will need to implement the sum using a nested loop or using the sum() function on a slice of the list.

Also note is that this calculation is not valid near the ends of the list. You should write a loop that only calculates the average for valid years. In other words if temps[i-k] can not have an index of less than 0, then i cannot be less than k. In the example above i cannot be less than 5. A similar constraint holds for the other end of the list.

Write a loop to compute the average temperature for each valid year. The window position i will move, or slide, from the lowest valid year to the highest valid year. Your loop should print the year and the average separated by a comma. Format the printed temperature to four decimal places using the format method.

Here is an example of the output your program should produce when the user chooses to average over k=60 years; there are not too many rows since there are only 10 years in the middle of the century when there are 60 years before and 60 years after over which to average.

Temperature anomaly filename:NorCal-1880-2018.csv Enter an integer between 0 and 60: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 

my temp_1 file is

done=False while not done: x=input("Enter an integer between 0 and 60:") if not x.isdigit(): print("Enter an integer.") else: k=int(x) if k<1 or k>60: print("Enter an integer up to 60.") else: done=True print("Using {0} for the window parameter.".format(k))

Given Data:

38.5 deg N, 121.7 deg E Temperature Anomalies, July Units: Degrees Celsius Base Period: 1981-2010 Missing: -9999 Year,Value 1880,-1.56 1881,-0.08 1882,-0.30 1883,-1.44 1884,-2.29 1885,-1.95 1886,-0.63 1887,0.63 1888,-0.72 1889,2.99 1890,-0.50 1891,-1.36 1892,1.03 1893,-0.16 1894,-0.01 1895,-1.46 1896,-1.23 1897,-0.83 1898,-0.91 1899,1.53 1900,1.08 1901,0.24 1902,-1.08 1903,-1.10 1904,-0.83 1905,-0.31 1906,-0.22 1907,-1.02 1908,-1.05 1909,-0.65 1910,-0.65 1911,-1.06 1912,-0.65 1913,-2.32 1914,1.12 1915,-0.21 1916,-0.57 1917,0.41 1918,-0.13 1919,0.48 1920,0.67 1921,0.21 1922,0.65 1923,-0.60 1924,-1.00 1925,-1.22 1926,-1.10 1927,-0.03 1928,0.61 1929,0.54 1930,0.66 1931,-1.57 1932,0.15 1933,0.83 1934,-0.35 1935,0.23 1936,-0.66 1937,0.17 1938,0.56 1939,0.31 1940,0.09 1941,-0.60 1942,-0.51 1943,-0.86 1944,-0.09 1945,-1.19 1946,0.77 1947,-0.72 1948,-0.33 1949,-0.53 1950,0.08 1951,0.73 1952,-0.31 1953,0.26 1954,-1.90 1955,-0.72 1956,-0.95 1957,-1.12 1958,1.28 1959,1.29 1960,0.28 1961,2.33 1962,0.32 1963,-0.25 1964,-0.13 1965,-0.80 1966,0.10 1967,1.23 1968,-0.06 1969,-1.19 1970,-1.51 1971,0.28 1972,-0.15 1973,1.32 1974,-0.72 1975,0.49 1976,-1.43 1977,-1.51 1978,1.61 1979,-0.74 1980,-1.41 1981,-0.09 1982,-0.33 1983,-0.88 1984,-0.06 1985,0.57 1986,-0.83 1987,-0.77 1988,-0.21 1989,-0.13 1990,-0.54 1991,-0.10 1992,-0.21 1993,-1.80 1994,1.47 1995,-0.08 1996,-1.28 1997,2.20 1998,0.49 1999,-0.37 2000,0.73 2001,0.40 2002,0.15 2003,-1.25 2004,0.03 2005,1.47 2006,-0.39 2007,0.40 2008,0.59 2009,0.41 2010,0.34 2011,-0.22 2012,1.03 2013,0.23 2014,-0.06 2015,-0.40 2016,0.48 2017,2.63 2018,0.18

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Beginning ASP.NET 2.0 And Databases

Authors: John Kauffman, Bradley Millington

1st Edition

0471781347, 978-0471781349

More Books

Students also viewed these Databases questions