pandas matplotlib plot有奇怪的文物

时间:2017-03-08 20:51:34

标签: python pandas matplotlib

熊猫系列是怎么造成这个的?

plt.plot(df["Column"].as_matrix())

good plot

plt.plot(df["Column"])

bad plot

df["Column"].plot()

实际上有类似的文物,但情节并不完全相同。

1 个答案:

答案 0 :(得分:1)

假设您有以下DataFrame

x = [2,1,3,6,5,6,7]
y = [1,2,5,1,1,6,1]
df = pd.DataFrame({"y" : y }, index=x)

然后打电话给 plt.plot(df["y"].as_matrix())相当于plt.plot(y),它仅根据自己的索引绘制y值(从0开始,递增1)。
相比之下,
plt.plot(df["y"])相当于plt.plot(x,y),它将y值与数据框的索引进行对比。如果这些索引没有排序,则图表看起来会变形。 (对于pandas plot命令也是如此。)

这是一个完整的例子。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"y" : [1,2,5,1,1,6,1] }, index=[2,1,3,6,5,6,7])

plt.plot(df["y"].as_matrix(), lw=3, label='plt.plot(df["y"].as_matrix())')
plt.plot(df["y"], lw=3, label='plt.plot(df["y"])')
df["y"].plot(ax=plt.gca(), linestyle="--", color="k", label='df["y"].plot()')

plt.legend()
plt.show()

enter image description here

能够使用上述任何方法的最简单的解决方案是重新索引数据框

df = df.reset_index()