首页 > 解决方案 > 分析 GPX 数据时出现错误“'NoneType' 对象没有属性 'offset'”

问题描述

我在学习 Python(https://towardsdatascience.com/how-tracking-apps-analysis-your-gps-data-a-hands-on-tutorial-in-python-756d4db6715d)的同时关注本教程。

我正处于要绘制“时间”和“海拔”的步骤。但是当我这样做时:

plt.plot(df['time'], df['ele'])
plt.show()

我收到错误“'NoneType' 对象没有属性 'offset'”。如果我绘制“经度”和“纬度”,一切正常。我自己找不到解决这个问题的方法。到目前为止,这是“我的”代码:

import gpxpy
import matplotlib.pyplot as plt
import datetime
from geopy import distance

from math import sqrt, floor
import numpy as np
import pandas as pd
import chart_studio.plotly as py
import plotly.graph_objects as go
import haversine
#Import Plugins

gpx_file = open('01_Karlsruhe_Schluchsee.gpx', 'r')
gpx = gpxpy.parse(gpx_file)

data = gpx.tracks[0].segments[0].points

## Start Position
start = data[0]
## End Position
finish = data[-1]

df = pd.DataFrame(columns=['lon', 'lat', 'ele', 'time'])

for point in data:
    df = df.append({'lon': point.longitude, 'lat' : point.latitude,
                   'ele' : point.elevation, 'time' : point.time}, ignore_index=True)

print(df)
plt.plot(df['time'], df['ele'])
plt.show()

我的数据框的图片

标签: pythonpandasmatplotlibgraphgpx

解决方案


从“时间”列中删除时区可能会奏效。您可以使用tz_localize. 请注意,您必须调用方法dt来访问列日期时间属性:

df['time'] = df['time'].dt.tz_localize(None)

推荐阅读