パンダの時系列データフレームがあります。df
日付はインデックスです。3つの列、cusip、ticker、factor。
日付ごとのデータを十分位数にしたい。日付ごとに約100の要素...各日付は1から10まで除数されます。
最初の試みとして、日付に関係なくデータフレーム全体を十分位数で計算しようとしました。私が使用した:
factor = pd.cut(df.factor, 10) #This gave an error:
adj = (mx - mn) * 0.001 # 0.1% of the range
Sybase.Error:('レイヤー:2、オリジン:4 \ ncs_calc:cslibユーザーAPIレイヤー:共通ライブラリエラー:変換/操作の結果、オーバーフローが発生しました。')
データフレームには1mmの行があります。サイズの問題ですか?ナンの問題?
3つの質問。
- 現在の機能の何が問題になっていますか?
- 列内のnanの数を取得するにはどうすればよいですか?
- 日付ごとの決定に関する推奨事項はありますか?
お手伝いありがとう。pandaspythonは初めてです。
サンプルデータ:
df: cusip ticker factor
date
2012-01-05 XXXXX ABC 4.26
2012-01-05 YYYYY BCD -1.25
...(100 more stocks on this date)
2012-01-06 XXXXX ABC 3.25
2012-01-06 YYYYY BCD -1.55
...(100 more stocks on this date)
私が欲しいものの出力:
#column with the deciles, lined up with the df.
decile
10
2
...
10
3
...
次に、これをデータフレームに追加して、新しい列を作成できます。各日付は十分位数になり、各データポイントにはその日付に対応する十分位数があります。ありがとう。
スタックトレース:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/misc/apps/linux/python-2.6.1/lib/python2.6/site-packages/pandas-0.10.0-py2.6-linux-x86_64.egg/pandas/core/groupby.py", line 1817, in transform res = wrapper(group)
File "/misc/apps/linux/python-2.6.1/lib/python2.6/site-packages/pandas-0.10.0-py2.6-linux-x86_64.egg/pandas/core/groupby.py", line 1807, in <lambda> wrapper = lambda x: func(x, *args, **kwargs) File "<stdin>", line 1, in <lambda> File "/misc/apps/linux/python-2.6.1/lib/python2.6/site-packages/pandas-0.10.0-py2.6-linux-x86_64.egg/pandas/tools/tile.py", line 138, in qcut bins = algos.quantile(x, quantiles)
File "/misc/apps/linux/python-2.6.1/lib/python2.6/site-packages/pandas-0.10.0-py2.6-linux-x86_64.egg/pandas/core/algorithms.py", line 272, in quantile return algos.arrmap_float64(q, _get_score) File "generated.pyx", line 1841, in pandas.algos.arrmap_float64 (pandas/algos.c:71156) File "/misc/apps/linux/python-2.6.1/lib/python2.6/site-packages/pandas-0.10.0-py2.6-linux-x86_64.egg/pandas/core/algorithms.py", line 257, in _get_score idx % 1)
File "/misc/apps/linux/python-2.6.1/lib/python2.6/site-packages/pandas-0.10.0-py2.6-linux-x86_64.egg/pandas/core/algorithms.py", line 279, in _interpolate return a + (b - a) * fraction File "build/bdist.linux-x86_64/egg/Sybase.py", line 246, in _cslib_cb Sybase.Error: ('Layer: 2, Origin: 4\ncs_calc: cslib user api layer: common library error: The conversion/operation resulted in overflow.', <ClientMsgType object at 0x1c4da730>)