У меня есть некоторые данные об уровнях озона на некоторых участках мониторинга в Великобритании, с указанием широты и долготы каждого участка, например:
df = pd.DataFrame([[33. , 52.411563, -1.560228],
[45. , 52.437165, -1.829999],
[31. , 52.47609 , -1.875024],
[53. , 50.5976 , -3.71651 ],
[39. , 50.37167 , -4.142361],
[41. , 50.725083, -3.532465],
[69. , 51.05625 , -2.68345 ],
[38. , 51.462839, -2.584482],
[56. , 50.73957 , -1.826744]],columns = ['values','lat','lon'])
Я хотел бы представить эти точки как квадраты сетки, закрашенные их среднимзначение для точек, которые лежат в пределах одного и того же поля сетки, используя официальную сетку - 0,25x0,3125 км, широты и долготы которой определяются следующим образом:
grid = {'lon':np.linspace(-15.00,40,177),
'lat':np.linspace(32.75,61.25,115)} #should define the grid squares for the map
Я попытался просмотреть столбцы широты и долготы,переназначение каждого значения его ближайшей лат-лонской паре. Это выглядит как работа.
for i, [time, val, lat, lon] in DEFRAO3.iterrows():
pos_lat = bisect_left(nested_grid['lat'],lat)
new_lat = nested_grid['lat'][pos_lat]
pos_lon = bisect_left(nested_grid['lon'],lon)
new_lon = nested_grid['lon'][pos_lat]
DEFRAO3.set_value(i, 'latitude', new_lat)
DEFRAO3.set_value(i, 'longitude', new_lon)
DEFRAO3
Дает:
Затем, усреднение для позиций с одинаковыми (широта, долгота):
newDEFRA = DEFRAO3.groupby(['latitude','longitude'], as_index=False).mean()
Но когда я строю это, все мои точки находятся вдоль одной диагональной линии.