Разница между pandas агрегаторами .first () и .last () - PullRequest
1 голос
/ 22 апреля 2020

Мне любопытно, что last () и first () делают в этом конкретном c экземпляре (при привязке к повторной выборке). Поправьте меня, если я ошибаюсь, но я понимаю, если вы передаете аргументы в первый и последний, например, 3; он возвращает первые 3 месяца или первые 3 года.

В этом случае, так как я не передаю никаких аргументов в первый и последний, что на самом деле происходит, когда я делаю повторную выборку? Я знаю, что если я произвожу выборку с помощью цепочки .mean (), я буду повторять выборку по годам со средним баллом за усреднение по всем месяцам, но что происходит, когда я использую last ()?

Более важно Почему first () и last () дают мне разные ответы в этом контексте? Я вижу, что численно они не равны.

т.е.: post2008.resample (). First ()! = Post2008.resample (). Last ()

Tldr:
i) Что делают .first () и .last ()
ii) Что делают .first () и .last () в этом случае, когда связаны с повторной выборкой
iii) Почему .resample (). first ()! = .resample (). last ()

Это код перед агрегацией

# Read 'GDP.csv' into a DataFrame: gdp
gdp = pd.read_csv('GDP.csv', index_col='DATE', parse_dates=True)

# Slice all the gdp data from 2008 onward: post2008
post2008 = gdp.loc['2008-01-01':,:]

# Print the last 8 rows of post2008
print(post2008.tail(8))

Вот что выводит print (post2008.tail (8)):

              VALUE
DATE               
2014-07-01  17569.4
2014-10-01  17692.2
2015-01-01  17783.6
2015-04-01  17998.3
2015-07-01  18141.9
2015-10-01  18222.8
2016-01-01  18281.6
2016-04-01  18436.5

Вот код, который ресэмплирует и агрегирует по last ()

# Resample post2008 by year, keeping last(): yearly
yearly = post2008.resample('A').last()
print(yearly)

Это то же, что и год, когда его post2008.resample ('A'). Last ()

              VALUE
DATE               
2008-12-31  14549.9
2009-12-31  14566.5
2010-12-31  15230.2
2011-12-31  15785.3
2012-12-31  16297.3
2013-12-31  16999.9
2014-12-31  17692.2
2015-12-31  18222.8
2016-12-31  18436.5

Вот код, который ресэмплирует и агрегирует по first ()

# Resample post2008 by year, keeping first(): yearly
yearly = post2008.resample('A').first()
print(yearly)

Это то же, что и год, когда его post2008.resample ('A'). First ()

            VALUE
DATE               
2008-12-31  14668.4
2009-12-31  14383.9
2010-12-31  14681.1
2011-12-31  15238.4
2012-12-31  15973.9
2013-12-31  16475.4
2014-12-31  17025.2
2015-12-31  17783.6
2016-12-31  18281.6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...