Skip to main content

Python Energy Data Analysis Utilities

Project description

pyedautils

Python Energy Data Analysis Utilities

CI - Test Coverage PyPI Latest Release PyPI Downloads

What is it?

pyedautils is a python package designed for analyzing and visualizing comfort and energy time series data. It provides a compact yet expanding collection of utility functions and visualizations aimed at streamlining data exploration.

Installation

The package is available on PyPi.org and can be installed with:

pip install pyedautils

Table of contents

plots.py

data_io.py

geopy.py

meteo_swiss.py

season.py


plots.py

plot_daily_profiles_overview()

This function creates an overview of typical daily profiles per weekday and season of year with a confidence band where 90% of the values lie (q5 to q95).

from pyedautils.data_io import load_data
from pyedautils.plots import plot_daily_profiles_overview

# data preprocessing
file_path = "pyedautils/data/ele_meter.csv"
df = load_data(file_path)
df['value'] = df['value'].diff()
df = df.dropna()

# create and show plot
fig = plot_daily_profiles_overview(df)
fig.show(renderer="browser")

plot_daily_profiles_overview


data_io.py

File handling utilities for loading and saving data.

save_data()

Saves data to a file in various formats (CSV, Pickle, JSON) based on the given file extension of pile_path.

from pyedautils.data_io import save_data

file_path = "./my_filename.json"
save_data(df, file_path)

load_data()

Loads data from a file in various formats (CSV, Pickle, JSON) based on the given file extension of file_path.

from pyedautils.data_io import load_data

file_path = "pyedautils/data/ele_meter.csv"
df = load_data(file_path)

geopy.py

Helper funtions to find the coordinates from an address, convert lat/long values to swiss WGS84 coordinates and get the altitude from coordinates.

get_lat_long()

Returns latitude and longitude coordinates for the given address.

from pyedautils.geopy import get_lat_long

get_lat_long("Technikumstrasse 21, 6048 Horw, Switzerland")

# Out: [47.0143233, 8.305245521466286]

get_altitude_lat_long()

Returns altitude in meters above sea level for the given WGS84 coordinates. The opentopodata.org api gets used.

from pyedautils.geopy import get_altitude_lat_long

get_altitude_lat_long(47.0132975, 8.3059169)

# Out: 444.9

convert_wsg84_to_lv95()

Converts WGS84 latitude and longitude coordinates to Swiss coordinate system LV95.

from pyedautils.geopy import convert_wsg84_to_lv95

convert_wsg84_to_lv95(47.0132975, 8.3059169)

# Out: [2665945.104007165, 1207280.4252477456]

get_altitude_lv95()

Returns altitude in meters above sea level for the given LV95 coordinates. The geo.admin.ch api gets used.

from pyedautils.geopy import get_altitude_lv95

get_altitude_lv95([2665960.531, 1207281.985])

# Out: 442.6

get_coordindates_ch_plz()

Returns latitude and longitude for a Swiss postal code.

from pyedautils.geopy import get_coordindates_ch_plz

get_coordindates_ch_plz(6048)

# Out: (47.0108, 8.3039)

get_distance_between_two_points()

Calculates the distance in km between two points on the Earth's surface given their latitude and longitude coordinates.

from pyedautils.geopy import get_coordindates_ch_plz, get_distance_between_two_points

coord1 = get_coordindates_ch_plz(6048) # Horw
coord2 = get_coordindates_ch_plz(3800) # Interlaken

get_distance_between_two_points(coord1, coord2)

# Out: 50.301

meteo_swiss.py

find_nearest_station()

Returns station id of closest meteo swiss station to a coordinate.

from pyedautils.meteo_swiss import find_nearest_station
from pyedautils.geopy import get_coordindates_ch_plz, get_altitude_lat_long

coord = get_coordindates_ch_plz(6197)
altitude = get_altitude_lat_long(coord[0], coord[1])

find_nearest_station(coord[0], coord[1], altitude, sensor="temp")

# Out: "FLU"

season.py

get_season()

Get the season name out of a date for filter and grouping purposes.

from pyedautils.season import get_season
from datetime import datetime

get_season(datetime(2024,5,5))

# Out: 'Spring'

Default language of the returned strings is English. You can change that by passing the argument labels:

get_season(datetime(2024,5,5), labels=["Frühling", "Sommer", "Herbst", "Winter"])

# Out: 'Frühling'

Build info

# open anaconda console and navigate to pyedautils
py -m build
pip install 

Disclaimer
The author declines any liability or responsibility in connection with the published code and documentation.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyedautils-0.0.11.tar.gz (602.5 kB view details)

Uploaded Source

Built Distribution

pyedautils-0.0.11-py3-none-any.whl (224.4 kB view details)

Uploaded Python 3

File details

Details for the file pyedautils-0.0.11.tar.gz.

File metadata

  • Download URL: pyedautils-0.0.11.tar.gz
  • Upload date:
  • Size: 602.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.18

File hashes

Hashes for pyedautils-0.0.11.tar.gz
Algorithm Hash digest
SHA256 6224f417b47a2f05339a95a8cae21d8611726e298c6fd37d4d6084d2f7e5d41a
MD5 2d0134b55aed35d47dbc8ee3fe7eace7
BLAKE2b-256 8c5bd50e13e570cf4389303e4486c721a11833d9b711a187eda40680060e2d20

See more details on using hashes here.

File details

Details for the file pyedautils-0.0.11-py3-none-any.whl.

File metadata

  • Download URL: pyedautils-0.0.11-py3-none-any.whl
  • Upload date:
  • Size: 224.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.18

File hashes

Hashes for pyedautils-0.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 4f7f926cc8dcea26ad5a8349afe3b6f513e7e6828e568b128348b1f74587c01f
MD5 83a7d0ed0abceaa7e26b268e91abfce4
BLAKE2b-256 e404031f95be49cf72ba605a205864e1b423072118cd585485ae651eb5a08d26

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page