当我创建一个DataFrame时,然后按列排序它似乎在迭代显示中排序(即无论repr给出),但是当我调用DataFrame.plot()函数时,它会绘制未排序的数组.调用matplotlib.pylab.plot可以正常工作.我怀疑这与聪明的指针重新排列没有被传递给绘图函数调用访问数据的任何东西有关…或者我可能只是在做一些愚蠢的事情.我在pandas 0.8.1(osx和linux with python2.7.something)和pandas 0.9.0(osx with 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()
解决方法:
默认情况下,绘图是您的数据与索引的对比.如果是数字索引,请在对列进行排序后查看索引.你可能想使用plot(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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。