我用Pandas中的函数autocorrelation_plot绘制了自相关线,并希望访问它生成的数据。
我基本上是想找出数据集中的滞后点。
如何才能做到这一点?

发布于 2020-07-16 16:09:15
下列措施应能发挥作用:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
data = np.array(range(5)) * 10
ax = pd.plotting.autocorrelation_plot(data)

ax是AxesSubplot
<matplotlib.axes._subplots.AxesSubplot at 0x7f8b52758470>,它有一个名为lines的属性
[<matplotlib.lines.Line2D at 0x7f8b51c30f28>,
<matplotlib.lines.Line2D at 0x7f8b51c39390>,
<matplotlib.lines.Line2D at 0x7f8b51c397b8>,
<matplotlib.lines.Line2D at 0x7f8b51c39ba8>,
<matplotlib.lines.Line2D at 0x7f8b51c39f98>,
<matplotlib.lines.Line2D at 0x7f8b51c423c8>]如果您现在循环这些:
for li in ax.lines:
print(li.get_xydata())你得到
[[0. 1.15194588]
[1. 1.15194588]]
[[0. 0.87652254]
[1. 0.87652254]]
[[0. 0.]
[1. 0.]]
[[ 0. -0.87652254]
[ 1. -0.87652254]]
[[ 0. -1.15194588]
[ 1. -1.15194588]]
[[ 1. 0.4]
[ 2. -0.1]
[ 3. -0.4]
[ 4. -0.4]
[ 5. 0. ]]因此,我们可以看到:
xydata = ax.lines[-1].get_xydata()
array([[ 1. , 0.4],
[ 2. , -0.1],
[ 3. , -0.4],
[ 4. , -0.4],
[ 5. , 0. ]])如果您想要单独的数据,您可以:
xdata = ax.lines[-1].get_xdata()
# array([1, 2, 3, 4, 5])
ydata = ax.lines[-1].get_ydata()
# array([ 0.4, -0.1, -0.4, -0.4, 0. ])https://stackoverflow.com/questions/62938291
复制相似问题