나는 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. 시리즈를 DataFrame의 인덱스로 사용
- 3. MultiIndex 및 DataFrame의 열
- 4. R은 dataframe의 모든 값을 추출하고
- 5. Python 용 팬더에서 데이터 Winsorize
- 6. 팬더에서 효율적으로 줄을 확장하십시오. DataFrame
- 7. 팬더에서 datetime 인덱스를 만드는 방법
- 8. 팬더에서 누락 된 데이터 처리
- 9. 'OR'을 사용하여 팬더에서 데이터 선택
- 10. HOG 히스토그램 빈의 삼각 보간 보간
- 11. R의 보간 값 (음의 보간 값 제외)
- 12. 변수 보간
- 13. PyLab의 보간
- 14. HSL 보간
- 15. 변수 보간
- 16. mathematica로 보간
- 17. 시공간 보간
- 18. as3을 보간
- 19. 보간 각도
- 20. 2D 보간
- 21. 컬러 보간
- 22. 장고 보간?
- 23. 보간 시계열
- 24. 업데이트 후 팬더에서 적용 기능에 문제가 발생했습니다.
- 25. 팬더에서 고유 한 열 쌍으로 계산
- 26. 팬더에서 막대 차트 클러스터를 시각적으로 분리
- 27. 팬더에서 시간차를 두어 시리즈를 분할 하시겠습니까?
- 28. 시계열 데이터 보간 R
- 29. 대 매트릭스의 SciPy 보간
- 30. R의 levelplot 및 보간
Avaris, 정말 고맙습니다. – archlight
이것을 fillna의 옵션으로 통합하는 것이 좋습니다. – DanB
보간 단계에서 상수 (분리)를 유지할 다른 치수 (또는 카테고리)가 있으면 어떻게됩니까? 즉, 귀사의 멋진 솔루션을 어떻게 그룹 바이와 결합 할 수 있습니까? 현재 색인으로 반복되는 값 (예 : 그룹화하려는 다른 카테고리에서 동일 함)이있는 경우 reindex() 단계가 실패하여 "고유 색인 객체로만 색인을 다시 생성합니다"라고 주장합니다. (아마도 이것은 새로운 질문이되어야 할 것입니까?) – CPBL