Source code for aixweather.imports.EPW
"""
import epw files
"""
import pandas as pd
from aixweather.imports.utils_import import MetaData
[docs]def load_epw_meta_from_file(path: str) -> MetaData:
"""
Load an EPW file from a specified path and parse the file header for metadata.
Args:
path (str): The file path to the EPW file to be loaded.
Returns:
MetaData: An object containing the parsed metadata from the EPW file.
"""
meta = MetaData()
with open(path, "r", encoding="latin1") as file:
lines = file.readlines()
# The 1st line contains the location data
location_data = lines[0].split(",")
meta.station_name = location_data[1]
meta.latitude = float(location_data[6])
meta.longitude = float(location_data[7])
meta.timezone = float(location_data[8])
meta.altitude = float(location_data[9])
meta.input_source = "EPW"
return meta
[docs]def load_epw_from_file(path: str) -> pd.DataFrame:
"""
Import data from an EPW file and convert it into a DataFrame.
Args:
path (str): The absolute path to the EPW file.
Returns:
pd.DataFrame: A DataFrame containing the imported data from the EPW file.
"""
# Find the row number for "DATA PERIODS" to determine where the data starts
with open(path, "r", encoding="latin1") as file:
lines = file.readlines()
data_start_row = (
next(i for i, line in enumerate(lines) if "DATA PERIODS" in line) + 1
)
# Skipping header rows to load data
weather_df = pd.read_csv(
path,
skiprows=data_start_row,
header=None,
encoding="latin1",
encoding_errors="replace",
)
return weather_df