팬더의 rolling_mean 함수를 사용하여 Google Ngram Viewer의 스무딩 기능을 다시 만들려고합니다. 마지막 N 행 (N은 선택된 창 크기와 동일한 경우)을 제외하고는 모두 NaN의 결과가 큽니다. 나는 NaN이 존재하는 이유를 이해하지만 팬더가 가능한 최대 윈도우 크기를 가진 마지막 N 개의 행을 계산하도록하는 방법이 있는지 궁금합니다.팬더가 최대 가능한 롤링 평균을 계산합니다.
시작 DataFrame : 나는이 작업을 수행 할 때
y mc vc g freq 0 1980 2110 891 acorn 0.0000006816639806737 1 1981 2493 925 acorn 0.0000007869870441530 2 1982 1970 969 acorn 0.0000006058489961744 3 1983 1974 942 acorn 0.0000005869087043278 4 1984 2265 962 acorn 0.0000006284175013608 5 1985 2331 1002 acorn 0.0000006287865167972 6 1986 2288 1036 acorn 0.0000005938515224444 7 1987 2975 1081 acorn 0.0000007639327989758 8 1988 2562 1164 acorn 0.0000006201948589259 9 1989 2773 1271 acorn 0.0000006308818219374 10 1990 3230 1449 acorn 0.0000006736596925364 11 1991 3984 1279 acorn 0.0000008445218584394 12 1992 2908 1349 acorn 0.0000005616418361769 13 1993 3511 1522 acorn 0.0000006673125583208 14 1994 3623 1709 acorn 0.0000006391704741358 15 1995 3836 1760 acorn 0.0000006497943728333 16 1996 4304 1910 acorn 0.0000006909335126709 17 1997 4107 1954 acorn 0.0000006390261435505 18 1998 4469 1993 acorn 0.0000006660007460970 19 1999 4494 2141 acorn 0.0000006233081676193 20 2000 4827 2304 acorn 0.0000006135668877077
가 :
,536,913,632 :y mc vc g freq freq_average 0 1980 2110 891 acorn 0.0000006816639806737 0.0000006531021239145 1 1981 2493 925 acorn 0.0000007869870441530 0.0000006446377522759 2 1982 1970 969 acorn 0.0000006058489961744 0.0000006595496331134 3 1983 1974 942 acorn 0.0000005869087043278 0.0000006551768804259 4 1984 2265 962 acorn 0.0000006284175013608 0.0000006527473745770 5 1985 2331 1002 acorn 0.0000006287865167972 0.0000006546484943915 6 1986 2288 1036 acorn 0.0000005938515224444 0.0000006694537560066 7 1987 2975 1081 acorn 0.0000007639327989758 0.0000006489678280088 8 1988 2562 1164 acorn 0.0000006201948589259 0.0000006545554245675 9 1989 2773 1271 acorn 0.0000006308818219374 0.0000006593064945501 10 1990 3230 1449 acorn 0.0000006736596925364 0.0000006612498465021 11 1991 3984 1279 acorn 0.0000008445218584394 0.0000006668995733997 12 1992 2908 1349 acorn 0.0000005616418361769 0.0000006710063571366 13 1993 3511 1522 acorn 0.0000006673125583208 0.0000006621034432386 14 1994 3623 1709 acorn 0.0000006391704741358 0.0000006623864713016 15 1995 3836 1760 acorn 0.0000006497943728333 0.0000006608123863716 16 1996 4304 1910 acorn 0.0000006909335126709 NaN 17 1997 4107 1954 acorn 0.0000006390261435505 NaN 18 1998 4469 1993 acorn 0.0000006660007460970 NaN 19 1999 4494 2141 acorn 0.0000006233081676193 NaN 20 2000 4827 2304 acorn 0.0000006135668877077 NaN
df['freq_average'] = pd.rolling_mean(df['freq'],5,min_periods=0,center=True)
나는이 결과를 얻을 10
그래서 내가 찾고있는 위의 결과를 계산하는 방법이지만 인덱스 16 (이 경우) 창 크기 4 (원래 5 대신), 계산 된 17 창 크기 계산 된 3, 등등. 당신이 Google Ngram Viewer의 결과를 보면
, 인덱스 16 ~ 20는 다음에 결과를해야합니다
y mc vc g freq freq_average 16 1996 4304 1910 acorn 0.0000006909335126709 0.0000659528 17 1997 4107 1954 acorn 0.0000006390261435505 0.0000638973 18 1998 4469 1993 acorn 0.0000006660007460970 0.0000648639 19 1999 4494 2141 acorn 0.0000006233081676193 0.0000645971 20 2000 4827 2304 acorn 0.0000006135668877077 0.0000647105
내가 하루 정도이에 내 머리를 두드리는 있었어요 운이 없었습니다. 어떤 방향으로 대단히 감사합니다!
보다 직선적이며 효율적인 솔루션이있을 수 있지만 직접 계산 한 적이 있습니까? 즉, i = 16에서 i = 20, 평균값을 20에서 20으로 계산하는 반복적 인 방법을 만드는 것은 어렵지 않습니다. – Inox
낯선 사람이라도 rolling_mean을 할 때 다른 숫자를 얻습니다. 단 2 개의 NaN 라인 . 이것을 다시 확인할 수 있습니까? –
@Inox - 귀하의 제안과 함께 나아갈 방향에 대한 조언이 있습니까? – dumbbyte