Repository: pvlib/pvanalytics

Issue:
orientation._freqstr_to_hours returns minutes not hours
Should [this line](https://github.com/pvlib/pvanalytics/blob/7104074be64de911ea2eafa6f97ddd3c1e444799/pvanalytics/features/orientation.py#L60) be ' / 3600'?

Discussion:

Patch:
diff --git a/pvanalytics/features/orientation.py b/pvanalytics/features/orientation.py
index 0b42080..9498af8 100644
--- a/pvanalytics/features/orientation.py
+++ b/pvanalytics/features/orientation.py
@@ -1,5 +1,6 @@
 """Functions for identifying system orientation."""
 import pandas as pd
+from pandas.tseries import frequencies
 from pvanalytics.util import _fit, _group
 
 
@@ -55,9 +56,7 @@ def _conditional_fit(day, minutes, fitfunc, freq, default=0.0, min_hours=0.0,
 
 def _freqstr_to_hours(freq):
     # Convert pandas freqstr to hours (as a float)
-    if freq.isalpha():
-        freq = '1' + freq
-    return pd.to_timedelta(freq).seconds / 60
+    return pd.to_timedelta(frequencies.to_offset(freq)).seconds / 3600
 
 
 def _hours(data, freq):


Test patch:
diff --git a/pvanalytics/tests/features/test_orientation.py b/pvanalytics/tests/features/test_orientation.py
index dab66d7..b85d19a 100644
--- a/pvanalytics/tests/features/test_orientation.py
+++ b/pvanalytics/tests/features/test_orientation.py
@@ -121,3 +121,9 @@ def test_stuck_tracker_profile(solarposition, clearsky):
         poa['poa_global'],
         solarposition['zenith'] < 70
     ).all()
+
+
+def test_frequency_to_hours():
+    assert orientation._freqstr_to_hours('H') == 1.0
+    assert orientation._freqstr_to_hours('15T') == 0.25
+    assert orientation._freqstr_to_hours('2H') == 2.0