-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdegree_days.py
More file actions
83 lines (71 loc) · 2.71 KB
/
degree_days.py
File metadata and controls
83 lines (71 loc) · 2.71 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#Import the neccessary libraries and functions
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import re
import os
import glob
from matplotlib import rcParams
from pandas import Series, DataFrame
import csv
import datetime as datetime
from datetime import datetime
import warnings
from tkinter import filedialog
from tkinter import *
warnings.filterwarnings('ignore')
def subset_datetime(df, start_time, end_time):
"""Subsets the dataframe for a given start time and end time
Parameters
----------
df : Pandas Dataframe
Contains microclimate data or other types of data that need to be subset
start_time : datetime object
The beginning of the time interval
end_time : datetime object
The end of the time interval
Returns
-------
Pandas Dataframe with the values between the time interval
"""
import pandas as pd
# Extract all dates after the start time
df = df[df.datetime > start_time]
# Extract all dates before the end time
result_df = df[df.datetime < end_time]
# Export the results
return result_df
def plant_degree_day(dataframe):
dataframe['Plant_Degree_Day'] = 0.0
dataframe['Sum_Plant_Degree_Day'] = 0.0
tCount = 0
for year in dataframe.groupby('Year').sum().index:
df = subset_datetime(dataframe, datetime(int(year), 1, 1), datetime(int(year)+1, 1, 1))
yearly_plant_degree_day = []
for i in df['temp']:
if(i<= 32):
dataframe.at[tCount,['Plant_Degree_Day']] = 0.0
dataframe.at[tCount,['Sum_Plant_Degree_Day']] = sum(yearly_plant_degree_day)
else:
dataframe.at[tCount,['Plant_Degree_Day']]=np.round((i-32)/24,3)
yearly_plant_degree_day.append(np.round((i-32)/24,3))
dataframe.at[tCount,['Sum_Plant_Degree_Day']] = sum(yearly_plant_degree_day)
tCount+=1
return dataframe
def bug_degree_day(dataframe):
dataframe['Bug_Degree_Day'] = 0.0
dataframe['Sum_Bug_Degree_Day'] = 0.0
bCount = 0
for year in dataframe.groupby('Year').sum().index:
df = subset_datetime(dataframe, datetime(int(year), 1, 1), datetime(int(year)+1, 1, 1))
yearly_bug_degree_day = []
for j in df['temp']:
if(j<=50):
dataframe.at[bCount,['Bug_Degree_Day']] = 0.0
dataframe.at[bCount,['Sum_Bug_Degree_Day']] = sum(yearly_bug_degree_day)
else:
dataframe.at[bCount,['Bug_Degree_Day']] = np.round((j-50)/24,3)
yearly_bug_degree_day.append((j-50)/24,3)
dataframe.at[bCount,['Sum_Bug_Degree_Day']] = sum(yearly_bug_degree_day)
bCount+=1
return dataframe