Skip to content

Commit

Permalink
Improve tidying function
Browse files Browse the repository at this point in the history
  • Loading branch information
gutzbenj committed Jun 24, 2021
1 parent 782fc12 commit 0fa168a
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 28 deletions.
19 changes: 6 additions & 13 deletions wetterdienst/core/scalar/values.py
Expand Up @@ -7,6 +7,7 @@
from enum import Enum
from typing import Dict, Generator, List, Tuple, Union

import numpy as np
import pandas as pd
from pint import Quantity
from pytz import timezone
Expand Down Expand Up @@ -539,10 +540,15 @@ def tidy_up_df(self, df: pd.DataFrame, dataset: Enum) -> pd.DataFrame:

df[Columns.VALUE.value] = pd.to_numeric(df[Columns.VALUE.value]).astype(float)

if Columns.QUALITY.value not in df:
df[Columns.QUALITY.value] = np.nan

df[Columns.QUALITY.value] = pd.to_numeric(df[Columns.QUALITY.value]).astype(
float
)

df.loc[df[Columns.VALUE.value].isna(), Columns.QUALITY.value] = np.NaN

return df

@abstractmethod
Expand Down Expand Up @@ -702,7 +708,6 @@ def all(self) -> ValuesResult:

tqdm_out = TqdmToLogger(log, level=logging.INFO)

# TODO: write tqdm progressbar to logging stream
for result in tqdm(
self.query(), total=len(self.stations.station_id), file=tqdm_out
):
Expand All @@ -716,18 +721,6 @@ def all(self) -> ValuesResult:
# Have to reapply category dtype after concatenation
df = self._coerce_meta_fields(df)

# for column in (
# Columns.STATION_ID.value,
# Columns.PARAMETER.value,
# Columns.QUALITY.value,
# ):
# try:
# df[column] = df[column].astype("category")
# except KeyError:
# pass

# df.attrs["tidy"] = self.stations.tidy

return ValuesResult(stations=self.stations, df=df)

def _humanize(self, df: pd.DataFrame) -> pd.DataFrame:
Expand Down
22 changes: 10 additions & 12 deletions wetterdienst/provider/dwd/forecast/api.py
Expand Up @@ -75,10 +75,6 @@ class DwdMosmixValues(ScalarValuesCore):
_data_tz = Timezone.UTC
_has_quality = False

# @property
# def _tidy(self) -> bool:
# return self.stations.tidy

_irregular_parameters = tuple()
_integer_parameters = INTEGER_PARAMETERS
_string_parameters = tuple()
Expand Down Expand Up @@ -136,14 +132,16 @@ def query(self) -> Generator[ValuesResult, None, None]:
df = self._coerce_parameter_types(df)

if self.stations.stations.tidy:
df = self._tidy_up_df(df)
df = self.tidy_up_df(df, self.stations.stations.mosmix_type)

# df = self._tidy_up_df(df)

df[
Columns.DATASET.value
] = self.stations.stations.mosmix_type.value.lower()
df[Columns.VALUE.value] = pd.to_numeric(
df[Columns.VALUE.value], errors="coerce"
).astype(float)
# df[
# Columns.DATASET.value
# ] = self.stations.stations.mosmix_type.value.lower()
# df[Columns.VALUE.value] = pd.to_numeric(
# df[Columns.VALUE.value], errors="coerce"
# ).astype(float)

df = self._coerce_meta_fields(df)

Expand Down Expand Up @@ -179,7 +177,7 @@ def _collect_station_parameter(self) -> Generator[pd.DataFrame, None, None]:
log.warning(e)
continue

def _tidy_up_df(self, df: pd.DataFrame) -> pd.DataFrame:
def _tidy_up_df(self, df: pd.DataFrame, dataset) -> pd.DataFrame:
"""
:param df:
Expand Down
3 changes: 0 additions & 3 deletions wetterdienst/provider/dwd/observation/api.py
Expand Up @@ -6,7 +6,6 @@
from itertools import repeat
from typing import Dict, List, Optional, Tuple, Union

import numpy as np
import pandas as pd

from wetterdienst.core.scalar.request import ScalarRequestCore
Expand Down Expand Up @@ -303,8 +302,6 @@ def _tidy_up_df(self, df: pd.DataFrame, dataset) -> pd.DataFrame:

df_tidy[Columns.QUALITY.value] = quality.reset_index(drop=True)

df_tidy.loc[df_tidy[Columns.VALUE.value].isna(), Columns.QUALITY.value] = np.NaN

return df_tidy

def _coerce_dates(self, series: pd.Series) -> pd.Series:
Expand Down

0 comments on commit 0fa168a

Please sign in to comment.