Private
Public Access
1
0

leaflet_compare -> polars

This commit is contained in:
2024-04-14 21:26:28 +02:00
parent 8d98eba403
commit 0d09ebcbc2

View File

@@ -802,14 +802,6 @@ def interactive_histoall(theworkouts, histoparam, includereststrokes,
rowdata = rowdata.fill_nan(None).drop_nulls()
#rowdata = dataprep.filter_df(rowdata, 'spm', spmmin, largerthan=True)
#rowdata = dataprep.filter_df(rowdata, 'spm', spmmax, largerthan=False)
#rowdata = dataprep.filter_df(
# rowdata, 'driveenergy', workmin, largerthan=True)
#rowdata = dataprep.filter_df(
# rowdata, 'driveenergy', workmax, largerthan=False)
if rowdata.is_empty():
return "", "No Valid Data Available"
@@ -914,7 +906,7 @@ def leaflet_chart_compare(course, workoutids, labeldict={}, startenddict={}):
w = Workout.objects.get(id=id)
rowdata = rdata(w.csvfilename)
time = rowdata.df['TimeStamp (sec)']
df = pd.DataFrame({
df = pl.DataFrame({
'workoutid': id,
'lat': rowdata.df[' latitude'],
'lon': rowdata.df[' longitude'],
@@ -924,26 +916,28 @@ def leaflet_chart_compare(course, workoutids, labeldict={}, startenddict={}):
except (Workout.DoesNotExist, KeyError): # pragma: no cover
pass
try:
df = pd.concat(data, axis=0)
df = pl.concat(data, rechunk=True)
except ValueError: # pragma: no cover
df = pd.DataFrame()
df = pl.DataFrame()
latmean, lonmean, coordinates = course_coord_center(course)
course_dict = GeoCourseSerializer(course).data
# Throw out 0,0
df = df.replace(0, np.nan)
df = df.loc[(df != 0).any(axis=1)]
df.fillna(method='bfill', axis=0, inplace=True)
df.fillna(method='ffill', axis=0, inplace=True)
df = df.with_columns(
(pl.col("lat")+pl.col("lon")).alias("latlon")
)
df =df.filter(pl.col("latlon")!=0,)
df = df.fill_nan(None)
df = df.select(pl.all()).interpolate()
try:
lat = df['lat']
lon = df['lon']
except KeyError: # pragma: no cover
return [0, "invalid coordinate data"]
if lat.empty or lon.empty: # pragma: no cover
if lat.is_empty() or lon.is_empty(): # pragma: no cover
return [0, "invalid coordinate data"]
colors = itertools.cycle(palette)
@@ -955,7 +949,7 @@ def leaflet_chart_compare(course, workoutids, labeldict={}, startenddict={}):
trajectories = []
for id, color in items:
group = df[df['workoutid'] == int(id)].copy()
group = df.filter(pl.col("workoutid") == int(id))
try:
startsecond, endsecond = startenddict[id]
except KeyError: # pragma: no cover
@@ -967,17 +961,14 @@ def leaflet_chart_compare(course, workoutids, labeldict={}, startenddict={}):
except KeyError: # pragma: no cover
label = str(id)
group.sort_values(by='time', ascending=True, inplace=True)
group.dropna(axis=0, how='any', inplace=True)
group = group.sort("time")
if endsecond > 0:
group['time'] = group['time'] - startsecond
mask = group['time'] < 0
group.mask(mask, inplace=True)
mask = group['time'] > (endsecond-startsecond)
group.mask(mask, inplace=True)
group = group.with_columns((pl.col("time")-startsecond))
group = group.filter(pl.col("time")>0)
group = group.filter(pl.col("time")<endsecond-startsecond)
lat = group['lat'].dropna()
lon = group['lon'].dropna()
lat = group['lat'].fill_nan(None).drop_nulls().to_list()
lon = group['lon'].fill_nan(None).drop_nulls().to_list()
coordinates = zip(lat, lon)
@@ -996,7 +987,7 @@ def leaflet_chart_compare(course, workoutids, labeldict={}, startenddict={}):
'trajectories': trajectories,
}
script, div = get_chart("/mapcompare", mapdata)
script, div = get_chart("/mapcompare", mapdata, debug=True)
return script, div