3

当我创建一个 DataFrame,然后按列排序时,它似乎在迭代显示中排序(即任何repr给出),但是当我调用 DataFrame.plot() 函数时,它会绘制未排序的数组。调用 matplotlib.pylab.plot 工作正常。我怀疑这与聪明的指针重新排列没有传递给绘图函数调用来访问数据的任何事情有关......或者我只是在做一些愚蠢的事情。我已经在 pandas 0.8.1(osx 和 linux 与 python2.7.something)和 pandas 0.9.0(osx 与 python3.something)上尝试过这个。

import pandas
import numpy
from matplotlib.pylab import *
a = numpy.random.randn(100,10)
df = pandas.DataFrame(a)
df.shape
df.sort(column=0)
df.columns
df.sort(column=0, inplace=True)
df[0]
df[0].plot()
4

1 回答 1

6

默认情况下,绘图是您的数据与索引。如果是数字索引,请在对列进行排序后查看索引。你可能想使用情节(use_index=False)。请参见下面的示例。

In [2]: df = pd.DataFrame(np.random.randn(10, 2), columns=['A', 'B'])

In [3]: df
Out[3]:
          A         B
0 -0.938196  2.220319
1 -0.022503  0.564602
2  0.033094 -0.717969
3  2.466486  1.229651
4 -0.641596 -1.016921
5  0.094125  1.531526
6  0.579631  1.398635
7 -0.854799 -0.930904
8 -1.177894 -1.501657
9  0.341655 -0.917243

In [4]: df.sort(columns='A', inplace=True)
Out[4]:
          A         B
8 -1.177894 -1.501657
0 -0.938196  2.220319
7 -0.854799 -0.930904
4 -0.641596 -1.016921
1 -0.022503  0.564602
2  0.033094 -0.717969
5  0.094125  1.531526
9  0.341655 -0.917243
6  0.579631  1.398635
3  2.466486  1.229651

In [5]: df['A'].plot(use_index=False)
Out[5]: <matplotlib.axes.AxesSubplot at 0xb56ac6c>

在此处输入图像描述

于 2012-10-18T07:06:36.447 回答