使用 python 清理 gps 数据 csv 文件

Cleaning gps data csv file with python

我正在 python 开发实时 LoRa gps 绘图仪。我通过串行从 LoRa 获取 gps 位置数据并将它们保存到 csv 文件中。它正在工作,但是当我因为 LoRa 信号不好而导致 gps 数据损坏时,我遇到了问题。像这样

45.830008,16.039911
45.830mdndn008,16.039911
45.830008,16.039oo9°1
45.830008,16.03991
45.830sj008,16.03#=991

如何只从python中的csv文件中读取数值数据?我不想读取损坏的数据。我只想读取整数。我正在使用 pandas 读取 csv 文件。像这样

data = pd.read_csv(self.data_path, names=['LATITUDE', 'LONGITUDE'], sep=',')


gps_data = tuple(zip(data['LATITUDE'].values, data['LONGITUDE'].values))

如果您想保留数值,您可以将 to_numeric()errors = 'coerce' 结合使用。然后无效值将被设置为NaN,见这里to_numeric

import pandas as pd

#read csv
data = pd.read_csv(self.data_path, names=['LATITUDE', 'LONGITUDE'], sep=',')

# copy dataframe structure only, no data
gps_data = pd.DataFrame(columns=data.columns)

# copy valid values only
gps_data['LATITUDE'] = pd.to_numeric(data['LATITUDE'], errors='coerce')
gps_data['LONGITUDE'] = pd.to_numeric(data['LONGITUDE'], errors='coerce')

print (data)
print (gps_data)

# drop rows with NaNs in lat OR long
gps_data = gps_data.dropna(subset=['LATITUDE', 'LONGITUDE']) # OR
#gps_data = gps_data.dropna(subset=['LATITUDE', 'LONGITUDE'], thresh=2) # AND threshold = 2

编辑:您可能还想删除具有空 NaN 值的行