Skip to main content

Welcome to pandas_degreedays’s documentation!

Latest Version Supported Python versions Wheel format License Development Status Downloads monthly Documentation Status Sourcegraph Gitter Code Health Build Status

pandas_degreedays

Pandas Degree Days (pandas_degreedays) is a Python package to calculate degree days.

Usage

You must provide a Pandas Series with temperature values.

Let’s call ts_temp this Serie which looks like:

datetime
2014-03-20 23:00:00    11
2014-03-20 23:30:00    11
2014-03-21 00:00:00    11
2014-03-21 00:30:00    11
2014-03-21 01:00:00    11
2014-03-21 01:30:00    11
...
2014-11-01 20:00:00    12
2014-11-01 20:30:00    12
2014-11-01 21:00:00    12
2014-11-01 21:30:00    12
2014-11-01 22:00:00    12
2014-11-01 22:30:00    12
Name: temp, Length: 10757

You can get a time serie with temperature in sample folder and read it using:

import pandas as pd
filename = 'temperature_sample.xls'
df_temp = pd.read_excel(filename)
df_temp = df_temp.set_index('datetime')
ts_temp = df_temp['temp']

You can also fetch a time serie with temperature from OpenWeatherMap.org. You need to install first openweathermap_requests.

import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
from pandas_degreedays.provider import TemperatureProvider
ts_temp = TemperatureProvider('OpenWeatherMap', api_key='').get_from_coordinates(0.34189, 46.5798114, '20120601', '20141215')

We can see if some data are missing using:

idx = ts_temp.index
s_idx = pd.Series(idx, index=idx)
diff_idx = s_idx-s_idx.shift(1)
s_sampling_period = diff_idx.value_counts()
sampling_period = s_sampling_period.index[0] # most prevalent sampling period
not_sampling_period = (diff_idx != sampling_period) # True / False

We can interpolate linearly missing data using:

from pandas_degreedays import inter_lin_nan
ts_temp = inter_lin_nan(ts_temp, '1H') # interpolates linearly NaN

We can calculate degree days using:

from pandas_degreedays import calculate_dd
df_degreedays = calculate_dd(ts_temp, method='pro', typ='heating', Tref=18.0, group='yearly')
method can be :
- 'pro' (energy professionals) - this is default calculation method - 'meteo'
typ (calculation type) can be :
- 'heating' - this is default calculation type - 'cooling'

Tref is reference temperature - default value is 18.0

group can be :
- 'yearly' - this is default grouping option - 'yearly10' - same as 'yearly' but year starts in October (10) - 'monthly' - 'weekly' - None - Any lambda function that can be use and that can be applied to a datetime:
from pandas_degreedays import yearly_month
df_degreedays = calculate_dd(ts_temp, method='pro', typ='heating', Tref=18.0, group=lambda dt: yearly_month(dt, 10))

It outputs a Pandas DataFrame with degree days like:

Tmin  Tmax   Tavg  Tref         DD      DD_cum
2014-03-22 7.0 11.0 9.00 18 9.000000 9.000000
2014-03-23 3.0 12.0 7.50 18 10.500000 19.500000
2014-03-24 0.0 10.0 5.00 18 13.000000 32.500000
2014-03-25 6.0 10.0 8.00 18 10.000000 42.500000
2014-03-26 5.0 12.0 8.50 18 9.500000 52.000000
2014-03-27 2.0 8.0 5.00 18 13.000000 65.000000
... ... ... ... ... ... ...
2014-10-26 5.0 17.0 11.00 18 7.000000 653.547663
2014-10-27 9.0 22.0 15.50 18 3.336923 656.884586
2014-10-28 7.5 20.0 13.75 18 4.544400 661.428986
2014-10-29 8.0 19.0 13.50 18 4.618182 666.047168
2014-10-30 12.0 22.0 17.00 18 1.992000 668.039168
2014-10-31 11.0 24.0 17.50 18 2.143077 670.182245

[224 rows x 6 columns]

You can display plot using:

from pandas_degreedays import plot_temp
plot_temp(ts_temp, df_degreedays)

About Pandas

pandas is a Python package providing fast, flexible, and expressive data structures designed to make working with “relational” or “labeled” data both easy and intuitive. It’s a very convenient library to work with time series.

Install

From Python package index

$ pip install pandas_degreedays

From source

Get latest version using Git

$ git clone https://github.com/scls19fr/pandas_degreedays.git
$ cd pandas_degreedays
$ python setup.py install

Release files for pandas_degreedays 0.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pandas_degreedays 0.0.6
File Size Uploaded
pandas_degreedays-0.0.6.tar.gz 9.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pandas_degreedays 0.0.6
File Interpreter ABI Platform
pandas_degreedays-0.0.6-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 22.2 kB

Release files / pandas_degreedays-0.0.6.tar.gz

Download URL pandas_degreedays-0.0.6.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d172c6b1a0b38cdbdf396eaa3a89f81ade422f6e5bf67550417db1b6f88e0e55
BLAKE2b-256 checksum
How to use checksums
5b20dd68f6bb6501adbc4d4d251ba2977768569548509a256f6a29325683291c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / pandas_degreedays-0.0.6-py2.py3-none-any.whl

Download URL pandas_degreedays-0.0.6-py2.py3-none-any.whl
Size 12.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
053263517a3b159e024b7429bf4e020f305571eb32e688d15ee99b79d25afa01
BLAKE2b-256 checksum
How to use checksums
f41b859faef056cedf3cc71a62a88426e075e6e70a8a3ff38b2fab8841e1e184
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.0.6 This release

2 release files

0.0.5

0.0.4

2 release files

0.0.3

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page