私はDataFrameを持っています。例えば、時間と列としてのインデックスを持つボラティリティサーフェスはストライキです。 2次元補間はどうやって行うのですか?私はreindex
できますが、どのように私はNaN
を扱うのですか?私たちはfillna(method='pad')
ができることは知っていますが、それは線形補間さえありません。補間を行う独自のメソッドをプラグインできる方法はありますか?パンダでのDataFrameの補間
25
A
答えて
33
DataFrame.interpolate
を使用して線形補間を得ることができます。より複雑なものについては
In : df = pandas.DataFrame(numpy.random.randn(5,3), index=['a','c','d','e','g'])
In : df
Out:
0 1 2
a -1.987879 -2.028572 0.024493
c 2.092605 -1.429537 0.204811
d 0.767215 1.077814 0.565666
e -1.027733 1.330702 -0.490780
g -1.632493 0.938456 0.492695
In : df2 = df.reindex(['a','b','c','d','e','f','g'])
In : df2
Out:
0 1 2
a -1.987879 -2.028572 0.024493
b NaN NaN NaN
c 2.092605 -1.429537 0.204811
d 0.767215 1.077814 0.565666
e -1.027733 1.330702 -0.490780
f NaN NaN NaN
g -1.632493 0.938456 0.492695
In : df2.interpolate()
Out:
0 1 2
a -1.987879 -2.028572 0.024493
b 0.052363 -1.729055 0.114652
c 2.092605 -1.429537 0.204811
d 0.767215 1.077814 0.565666
e -1.027733 1.330702 -0.490780
f -1.330113 1.134579 0.000958
g -1.632493 0.938456 0.492695
、あなたがロールアウトするSeries
オブジェクトに対処し、あなたが好きなようにNaN
値を記入し、別のSeries
オブジェクトを返す、独自の機能を必要としています。
6
古いスレッドですが、私の解を2d外挿/補間と共有し、インデックス値を尊重し、必要に応じて機能すると考えました。コードが少しばかげてしまったので、より良い解決策があるかどうかをお知らせください。
import pandas
from numpy import nan
import numpy
dataGrid = pandas.DataFrame({1: {1: 1, 3: 2},
2: {1: 3, 3: 4}})
def getExtrapolatedInterpolatedValue(x, y):
global dataGrid
if x not in dataGrid.index:
dataGrid.ix[x] = nan
dataGrid = dataGrid.sort()
dataGrid = dataGrid.interpolate(method='index', axis=0).ffill(axis=0).bfill(axis=0)
if y not in dataGrid.columns.values:
dataGrid = dataGrid.reindex(columns=numpy.append(dataGrid.columns.values, y))
dataGrid = dataGrid.sort_index(axis=1)
dataGrid = dataGrid.interpolate(method='index', axis=1).ffill(axis=1).bfill(axis=1)
return dataGrid[y][x]
print getExtrapolatedInterpolatedValue(2, 1.4)
>>2.3
+0
美しい解決策です。私のために非常にうまく動作します。投稿していただきありがとうございます! – HeinzKurt
関連する問題
- 1. パンダDATAFRAME補間/再サンプリング毎日のデータを
- 2. パンダ時間補間 - NaNs
- 3. パンダのデータフレームをルックアップ、補間、マッチングして
- 4. Pythonのパンダ:DATAFRAME
- 5. Pythonのパンダ - DATAFRAME
- 6. Pythonのパンダでは、どのようにしてDataFrameを再サンプリングして補間できますか?
- 7. パンダDATAFRAME
- 8. パンダで列間の日付を補間する
- 9. のpythonパンダDATAFRAMEコピー '='
- 10. パンダのDataFrameとブートストラップテーブル
- 11. 線形補間パンダ時系列
- 12. パンダでの補間関数の不確定性
- 13. パンダ:ピボットDATAFRAME、行
- 14. 変更パンダDATAFRAME
- 15. 列-パンダDATAFRAME
- 16. パンダ - 空DATAFRAME
- 17. パイソン - パンダ - DATAFRAME - 、
- 18. ピボットテーブル(?)パンダDATAFRAMEと
- 19. ソートデータ - パンダDATAFRAME
- 20. 検索(のみ)パンダのDATAFRAME
- 21. パンダのDataFrameのレベルは?
- 22. パンダDataFrameの列連結
- 23. 構築物パンダのDATAFRAME
- 24. 整形私のパンダはDATAFRAME
- 25. パンダで指定した間隔でxticksを表示するDataFrame
- 26. 平均パンダDATAFRAME日
- 27. 再形成パンダDATAFRAME
- 28. Fater更新パンダDATAFRAME
- 29. Python:パンダのDataFrameを時間、曜日、月別にフィルタリングする
- 30. パンダは最も近い方法でboolsを補間する
Avaris、ありがとうございました! – archlight
これをfillnaのオプションとして組み込むことをお勧めします。 – DanB
補間ステップで一定(別個)に保持する別のディメンション(またはカテゴリ)がある場合はどうなりますか?つまり、私は素晴らしいソリューションをグループバイとどのように組み合わせることができますか?現在、インデックスの値が重複している場合(たとえば、グループ化したい異なるカテゴリ間で同一の場合)、reindex()のステップは失敗し、「一意のインデックスオブジェクトでのみ有効です」と主張します。 (たぶんこれは新しい質問になるはずですか?) – CPBL