Python 熊猫matplotlib的情节有奇怪的人工制品

Python 熊猫matplotlib的情节有奇怪的人工制品,python,pandas,matplotlib,Python,Pandas,Matplotlib,熊猫系列是怎么造成这种情况的 plt.plot(df["Column"].as_matrix()) 实际上有相似的工件,但不是完全相同的图。假设您有以下数据帧 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.p

熊猫系列是怎么造成这种情况的

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




实际上有相似的工件,但不是完全相同的图。

假设您有以下数据帧

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
值。如果未对这些索引进行排序,绘图将看起来失真。(熊猫打印命令也是如此。)

这是一个完整的例子

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()

能够使用上述任何一种方法的最简单解决方案是重新为数据帧编制索引

df = df.reset_index()

如果包含示例数据,可能会有所帮助。我注意到x轴范围在这两种方法之间发生了变化。我认为“熊猫系列”的索引可能会导致不同的行为,这或多或少就是所发生的事情。我一直在对我的数据进行亚抽样,并在另一列上排序,这提升了我的索引。我曾假设该系列的“自然”索引类似于数组索引,但显然不是。出于好奇,与[0,series.size]相反,以这种方式进行索引背后的原因是什么?原因当然是每个条目都应该有其定义的索引(否则就没有索引的理由了)。例如,这允许在排序或筛选后明确标识数据。您可以使用
df=df.reset_index()
对数据帧进行新索引…就像在关系数据库中一样。
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()
df = df.reset_index()