-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSummary Weekly (7D) Observations.py
39 lines (30 loc) · 1.35 KB
/
Summary Weekly (7D) Observations.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def Sum7DayObservations(stationID, APIKEY):
response = requests.get('https://api.weather.com/v2/pws/dailysummary/7day?stationId={}&format=json&units=m&apiKey={}'.format(stationID, APIKEY))
response = response.json()
response = response['summaries']
def process_response(response):
new_dict = {}
metrics = response['metric']
met_container = {}
data = {}
for key,val in response.items():
if key not in data and key != 'metric':
data[key] = response[key]
else:
for met, value in metrics.items():
met_container[met] = metrics[met]
data.update(met_container)
return data
# Make a for loop over all the elements and append to list.
Sum7Day_data = [process_response(i) for i in sorted(response, key = lambda x:x['obsTimeLocal'])]
# verify if the list contains 7 days of data.
length = len(Sum7Day_data)
#create dataset headers from sample observation
headers = list(Sum7Day_data[0].keys())
#Write data to csv
with open('PWS_7dayObs.csv', 'w', newline = '') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames = headers)
writer.writeheader()
writer.writerows(Sum7Day_data)
# return values
return Sum7Day_data, length