leaflet_compare -> polars
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user