first routines with polars
This commit is contained in:
@@ -18,8 +18,10 @@ import rowers.metrics as metrics
|
||||
import rowers.dataprep as dataprep
|
||||
from rowers.dataprep import rdata
|
||||
import rowers.utils as utils
|
||||
import polars as pl
|
||||
|
||||
from rowers.rower_rules import ispromember
|
||||
from polars.exceptions import ColumnNotFoundError
|
||||
|
||||
from scipy.interpolate import griddata
|
||||
from scipy.signal import savgol_filter
|
||||
@@ -2306,29 +2308,30 @@ def interactive_cum_flex_chart2(theworkouts, promember=0,
|
||||
|
||||
columns = [name for name, d in metrics.rowingmetrics]
|
||||
columns_basic = [name for name, d in metrics.rowingmetrics if d['group'] == 'basic']
|
||||
columns = columns + ['spm', 'driveenergy', 'distance']
|
||||
columns_basic = columns_basic + ['spm', 'driveenergy', 'distance']
|
||||
columns = columns + ['spm', 'driveenergy', 'distance' ,'workoutstate']
|
||||
columns_basic = columns_basic + ['spm', 'driveenergy', 'distance', 'workoutstate']
|
||||
|
||||
datadf = pd.DataFrame()
|
||||
if promember:
|
||||
datadf = dataprep.getsmallrowdata_db(columns, ids=ids, doclean=True,
|
||||
datadf = dataprep.getsmallrowdata_pl(columns, ids=ids, doclean=True,
|
||||
workstrokesonly=workstrokesonly, for_chart=True)
|
||||
else:
|
||||
datadf = dataprep.getsmallrowdata_db(columns_basic, ids=ids, doclean=True,
|
||||
datadf = dataprep.getsmallrowdata_pl(columns_basic, ids=ids, doclean=True,
|
||||
workstrokesonly=workstrokesonly, for_chart=True)
|
||||
|
||||
try:
|
||||
_ = datadf[yparam2]
|
||||
except KeyError: # pragma: no cover
|
||||
except (KeyError, ColumnNotFoundError): # pragma: no cover
|
||||
yparam2 = 'None'
|
||||
|
||||
try:
|
||||
_ = datadf[yparam1]
|
||||
except KeyError:
|
||||
except (KeyError, ColumnNotFoundError):
|
||||
yparam1 = 'None'
|
||||
|
||||
datadf.dropna(axis=1, how='all', inplace=True)
|
||||
datadf.dropna(axis=0, how='any', inplace=True)
|
||||
datadf.drop_nulls()
|
||||
#datadf.dropna(axis=1, how='all', inplace=True)
|
||||
#datadf.dropna(axis=0, how='any', inplace=True)
|
||||
|
||||
# test if we have drive energy
|
||||
try: # pragma: no cover
|
||||
@@ -2347,42 +2350,43 @@ def interactive_cum_flex_chart2(theworkouts, promember=0,
|
||||
yparamname2 = axlabels[yparam2]
|
||||
|
||||
# check if dataframe not empty
|
||||
if datadf.empty: # pragma: no cover
|
||||
if datadf.is_empty(): # pragma: no cover
|
||||
return ['', '<p>No non-zero data in selection</p>', '', '']
|
||||
|
||||
try:
|
||||
datadf['x1'] = datadf.loc[:, xparam]
|
||||
datadf = datadf.with_columns(pl.col(xparam).alias("x1"))
|
||||
except KeyError: # pragma: no cover
|
||||
try:
|
||||
datadf['x1'] = datadf['distance']
|
||||
datadf = datadf.with_columns(pl.col("distance").alias("x1"))
|
||||
except KeyError:
|
||||
try:
|
||||
datadf['x1'] = datadf['time']
|
||||
datadf = datadf.with_columns(pl.col('time').alias("x1"))
|
||||
except KeyError: # pragma: no cover
|
||||
return ['', '<p>No non-zero data in selection</p>', '', '']
|
||||
|
||||
try:
|
||||
datadf['y1'] = datadf.loc[:, yparam1]
|
||||
datadf = datadf.with_columns(pl.col(yparam1).alias("y1"))
|
||||
except KeyError:
|
||||
try:
|
||||
datadf['y1'] = datadf['pace']
|
||||
datadf = datadf.with_columns(pl.col('pace').alias("y1"))
|
||||
except KeyError: # pragma: no cover
|
||||
return ['', '<p>No non-zero data in selection</p>', '', '']
|
||||
if yparam2 != 'None':
|
||||
try:
|
||||
datadf['y2'] = datadf.loc[:, yparam2]
|
||||
datadf = datadf.with_columns(pl.col(yparam2).alias("y2"))
|
||||
except KeyError: # pragma: no cover
|
||||
datadf['y2'] = datadf['y1']
|
||||
datadf = datadf.with_columns(pl.col("y1").alias("y2"))
|
||||
else: # pragma: no cover
|
||||
datadf['y2'] = datadf['y1']
|
||||
datadf = datadf.with_columns(pl.col("y1").alias("y2"))
|
||||
|
||||
|
||||
datadf['xname'] = axlabels[xparam]
|
||||
datadf['yname1'] = axlabels[yparam1]
|
||||
datadf = datadf.with_columns(xname = pl.lit(axlabels[xparam]))
|
||||
datadf = datadf.with_columns(yname1 = pl.lit(axlabels[yparam1]))
|
||||
|
||||
if yparam2 != 'None':
|
||||
datadf['yname2'] = axlabels[yparam2]
|
||||
datadf = datadf.with_columns(yname2 = pl.lit(axlabels[yparam2]))
|
||||
else: # pragma: no cover
|
||||
datadf['yname2'] = axlabels[yparam1]
|
||||
datadf = datadf.with_columns(yname2 = pl.lit(axlabels[yparam1]))
|
||||
|
||||
def func(x, a, b):
|
||||
return a*x+b
|
||||
@@ -2392,11 +2396,12 @@ def interactive_cum_flex_chart2(theworkouts, promember=0,
|
||||
try:
|
||||
popt, pcov = optimize.curve_fit(func, x1, y1)
|
||||
ytrend = func(x1, popt[0], popt[1])
|
||||
datadf['ytrend'] = ytrend
|
||||
datadf= datadf.with_columns(ytrend = ytrend)
|
||||
except TypeError:
|
||||
datadf['ytrend'] = y1
|
||||
datadf = datadf.with_columns(ytrend = y1)
|
||||
|
||||
data_dict = datadf.to_dict("records")
|
||||
|
||||
data_dict = datadf.to_dicts()
|
||||
|
||||
metrics_list = [{'name': name, 'rowingmetrics':d } for name, d in metrics.rowingmetrics]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user