3

DataFrame を作成し、列で並べ替えると、反復表示 (つまり、reprが与えるもの) で並べ替えられているように見えますが、DataFrame.plot() 関数を呼び出すと、並べ替えられていない配列がプロットされます。ただし、 matplotlib.pylab.plot の呼び出しは正常に機能します。データにアクセスするためにプロット関数が呼び出しているものに巧妙なポインターの再配置が渡されていないことに関係していると思われます...または、単に愚かなことをしているだけかもしれません。pandas 0.8.1 (python2.7.something を使用する osx および linux) と pandas 0.9.0 (python3.something を使用する osx) でこれを試しました。

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

プロットは、デフォルトでデータ対インデックスです。数値インデックスの場合は、列で並べ替えた後にインデックスを確認します。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>

ここに画像の説明を入力

于 2012-10-18T07:06:36.447 に答える