Python,Matplotlib,AttributeError:“ NoneType”对象没有属性“ offset”

时间:2019-12-08 05:05:51

标签: pandas matplotlib python-3.7

我正在尝试关注帖子https://towardsdatascience.com/how-tracking-apps-analyse-your-gps-data-a-hands-on-tutorial-in-python-756d4db6715d

import datetime
from math import sqrt, floor
import gpxpy
import matplotlib.pyplot as plt
from geopy import distance
import numpy as np
import pandas as pd
import chart_studio.plotly as py
import plotly.graph_objs as go
import haversine

GPX_FILE = open('/Users/lh/downloads/my_run_002.gpx', 'r')
GPX = gpxpy.parse(GPX_FILE)

len(GPX.tracks)
len(GPX.tracks[0].segments)
len(GPX.tracks[0].segments[0].points)
DATA = GPX.tracks[0].segments[0].points

## Start Position
START = DATA[0]
## End Position
FINISH = DATA[-1]

df = pd.DataFrame(columns=['lon', 'lat', 'alt', 'time'])
for point in DATA:
    df = df.append({'lon': point.longitude, 'lat' : point.latitude,
                    'alt' : point.elevation, 'time' : point.time}, ignore_index=True)

plt.plot(df['lon'], df['lat'])

plt.plot(df['time'], df['alt'])

我成功获得了生成图的代码: plt.plot(df['lon'], df['lat'])

但是当我尝试绘制时: plt.plot(df['time'], df['alt'])我收到此错误:

plt.plot(df['time'], df['alt']) 追溯(最近一次通话):

文件“”,第1行,在     plt.plot(df ['time'],df ['alt'])

文件“ /Users/lh/anaconda3/lib/python3.7/site-packages/matplotlib/pyplot.py”,第2789行,在图中     不是其他{}),** kwargs)

文件“ /Users/lh/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_axes.py”,第1666行,在图中     行= [* self._get_lines(* args,data = data,** kwargs)]

在“ 调用”中的文件“ /Users/lh/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py”第225行     来自self._plot_args(this,kwargs)的收益

文件“ /Users/lh/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py”,行391,在_plot_args中     x,y = self._xy_from_xy(x,y)

文件“ /Users/lh/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py”,第243行,_xy_from_xy     bx = self.axes.xaxis.update_units(x)

文件“ /Users/lh/anaconda3/lib/python3.7/site-packages/matplotlib/axis.py”,行1496,在update_units中     self.set_units(默认)

文件“ /Users/lh/anaconda3/lib/python3.7/site-packages/matplotlib/axis.py”,行1570,在set_units中     如果u!= self.units:

eq 中的文件“ /Users/lh/anaconda3/lib/python3.7/site-packages/gpxpy/gpxfield.py”,第71行     返回self.offset == other.offset

AttributeError:'NoneType'对象没有属性'offset'

df揭示

<table>
<tr><td></td><td>lon</td><td>lat</td><td>alt</td><td>time</td></tr><tr>
<td>0</td><td>   100.491491</td><td>  13.725929 </td><td>  9.8 </td><td> 2019-06-11 07:32:31+00:00</td></tr><tr>
<td>1</td><td>   100.491541 </td><td> 13.725939 </td><td> 10.5 </td><td> 2019-06-11 07:32:33+00:00</td></tr><tr>
<td>2</td><td>   100.491575 </td><td> 13.725943 </td><td> 10.7 </td><td> 2019-06-11 07:32:35+00:00</td></tr><tr>
<td>3</td><td>   100.491629 </td><td> 13.725970</td><td>  10.8 </td><td> 2019-06-11 07:32:37+00:00</td></tr><tr>
<td>4</td><td>  100.491667  </td><td>13.725987 </td><td> 11.1  </td><td>2019-06-11 07:32:38+00:00</td></tr><tr>
<td>5</td><td>   100.491693 </td><td> 13.726010</td><td>  11.0 </td><td> 2019-06-11 07:32:39+00:00</td></tr><tr>
<td>6</td><td>   100.491723 </td><td> 13.726035 </td><td> 10.9 </td><td> 2019-06-11 07:32:40+00:00</td></tr><tr>
<td>7</td><td>   100.491756 </td><td> 13.726069 </td><td> 10.8 </td><td> 2019-06-11 07:32:41+00:00</td></tr><tr>
<td>8</td><td>   100.491801 </td><td> 13.726124 </td><td> 10.6 </td><td> 2019-06-11 07:32:42+00:00</td></tr><tr>
<td>9</td><td>   100.491866 </td><td> 13.726193 </td><td> 10.6 </td><td> 2019-06-11 07:32:43+00:00</td></tr><tr>
<td>10</td><td>  100.491917 </td><td> 13.726236 </td><td> 11.0 </td><td> 2019-06-11 07:32:44+00:00</td></tr>
</table>

我认为时间格式可能不正确,所以我尝试了

df['time'] = pd.to_datetime(df['time'])
df.dtypes

出[2]:

lon float64

lat float64

alt float64

时间datetime64 [ns,SimpleTZ(“ Z”)]

dtype:对象

但这没什么不同,我仍然会收到AttributeError:'NoneType'对象没有属性'offset'

主要问题:如何解决此错误?

第二个问题:append方法似乎很慢,并不是填充pd的最有效方法。如果是这样,我该怎么做呢?

0 个答案:

没有答案