Python Energy Data Analysis Utilities
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.
The package is available on PyPi.org and can be installed with:
pip install pyedautils
- get_lat_long()
- get_altitude_lat_long()
- convert_wsg84_to_lv95()
- get_altitude_lv95()
- get_coordindates_ch_plz()
- get_distance_between_two_points()
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")
File handling utilities for loading and saving 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)
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)
Helper funtions to find the coordinates from an address, convert lat/long values to swiss WGS84 coordinates and get the altitude from coordinates.
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]
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
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]
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
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)
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
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"
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'
# 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.