如何在 Pandas 中读取 AIS 数据的大型 csv 文件并按 mmsi 排序?

问题描述 投票:0回答:0

我目前有一个包含 AIS 数据('mmsi'、'date_time_utc'、'lon'、'lat'、'sog'、'cog'、'true_heading'、'nav_status'、' message_nr') 用于特定区域内的所有船只。但是,当我尝试使用 pandas 创建数据框时,我收到以下警告:

 DtypeWarning: Columns (0,2,3,4,5,6,7,8) have mixed types.Specify dtype option on import or set low_memory=False.
  exec(compiled, ns_globals, ns_locals)

并且创建了这个数据框:

<bound method NDFrame.sample of                mmsi        date_time_utc  ... nav_status message_nr
0         219017214  2017-01-01 00:00:08  ...        0.0        1.0
1         219017214  2017-01-01 00:01:16  ...        0.0        1.0
2         219017214  2017-01-01 00:02:36  ...        0.0        1.0
3         219017214  2017-01-01 00:03:09  ...        0.0        1.0
4         219017214  2017-01-01 00:04:08  ...        0.0        1.0
            ...                  ...  ...        ...        ...
42340918  636092728  2017-12-31 21:41:10  ...        0.0        1.0
42340919  636092728  2017-12-31 21:42:42  ...        0.0        1.0
42340920  636092728  2017-12-31 21:43:11  ...        0.0        1.0
42340921  636092728  2017-12-31 21:44:50  ...        0.0        1.0
42340922  636092728  2017-12-31 21:45:21  ...        0.0        1.0

[42340923 rows x 9 columns]>

此外,运行此代码时: dataGroup = df.sort_values(['mmsi']).groupby('mmsi')

发生以下打字机错误: '<' not supported between instances of 'int' and 'str'

我尝试过的是: 奔跑

for column in df.columns:
    print(pd.api.types.infer_dtype(df[column][1:]))

混合整数 细绳 混合的 混合的 混合的 混合的 混合的 混合的 混合

然后我在阅读 csv 时尝试定义数据类型:

f = pd.read_csv(fp, header=None, 
                     names=['mmsi', 'date_time_utc', 'lon', 'lat', 'sog', 'cog', 'true_heading', 'nav_status', 'message_nr'], 
                     dtype={'mmsi':int, 'date_time_utc':str, 'lon':float, 'lat':float, 'sog':float, 'cog':float, 'true_heading':float, 'nav_status':float, 'message_nr':float})

:以 10 为底的 int() 的无效文字:'mmsi'

然后我尝试通过运行来限制行数:

 df = pd.read_csv(fp, header=None, nrows=10000,
                     names=['mmsi', 'date_time_utc', 'lon', 'lat', 'sog', 'cog', 'true_heading', 'nav_status', 'message_nr'])

这个似乎有效,但不明白为什么。

python pandas geopandas qgis ais
© www.soinside.com 2019 - 2024. All rights reserved.