Я чищу документы pandas, чтобы попытаться понять, как используется преобразование, и может на этом примере из документов: http://pandas.pydata.org/pandas-docs/stable/groupby.html (в разделе «Преобразование")Я не понимаю использование «Lambda» и «Transform» и из этого кода (pandas docs)
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
index = pd.date_range('10/1/1999', periods=1100)
ts = pd.Series(np.random.normal(0.5, 2, 1100), index)
ts = ts.rolling(window=100,min_periods=100).mean().dropna()
key = lambda x: x.year
zscore = lambda x: (x - x.mean())/x.std()
transformed = ts.groupby(key).transform(zscore)
пару вещей я запутались;.? первое использование лямбда
key = lambda x: x.year
Что тип данных х должен представлять в этом случае I» m unsure, из которых типы данных позволяют вызвать атрибут «.year»
Что касается этого случая:
zscore = lambda x: (x - x.mean())/x.std()
х будет представлять каждую строку ц и x.mean является средним, что именно (из ts.roll?)?
И, наконец, что именно делает трансформация в последней строке? Является ли это просто заменой значений ts на zscore? Я запустил переменную «преобразован», но индекс (даты) выглядит так же, как индекс ts. Итак, что именно делал groupby (key) в этом случае?
Спасибо!
Для ключа, х является индексом и лямбда-функция возвращает годы штампов времени в индексе. Для zscore x - срез серии, отрезанной по году. – piRSquared
Привет, piRSquared. «x - срез серии, отрезанной по году». Поэтому я предполагаю, что x.mean является средним значением всего фрагмента (группы), а x будет представлять собой только один элемент этого среза. Например, группа «2000» (2000 год) имеет много значений. Итак, x будет представлять каждый элемент этой группы через итерацию? – Moondra
nope. x - вся группа. Вот как х.mean() возвращает среднее значение группы. – piRSquared