#python #data-preprocessing #ais
Вопрос:
В настоящее время я работаю с набором данных AIS, содержащим поля MMSI, Метку времени, LAT, LON, SOG, COG и т.д. Здесь ВИНТИК находится над землей, и поддерживаемое значение винтика колеблется от 0 до 360 градусов. Но набор данных содержит отрицательные значения в некоторых строках. Мне хотелось бы знать, есть ли какая-либо формула или правило, чтобы преобразовать ее в 0-360. Поскольку я работаю с python, если кто-то знает, как это сделать на Python, будет признателен, но любая формула может сработать. Для удобства я прикрепил скриншот образца набора данных.
Ответ №1:
Чтобы преобразовать угол между 0 и 360, найдите модуль деления на 360:
df["COG_0_to_360"] = df["COG"]60
примеры:
-1060 == 350
1060 == 10
Комментарии:
1. @faring Я также только что принял предложение о работе для компании, которая отслеживает данные AIS 🙂
2. Поздравляю @Tom McLean
Ответ №2:
Вот мой окончательный код:
def COG_0_To_360(cog):
cog = np.fmod(cog, 360.0)
cog = np.where(cog < 0.0, cog 360.0, cog)
return np.abs(cog)
df['COG'] = COG_0_To_360(df['COG'])
Пример:
values = [-170, -10, -390, -355, 250, -440]
print(COG_0_To_360(values))
[190 350 330 5 250 280]