Я создал запрос, который состоит из нескольких фреймов данных, проанализированных по местоположению.Тем не менее, когда я пытаюсь выполнить итерацию через диктовку для запуска корреляций по местоположению, создается впечатление, что он выполняет корреляцию по всему набору.
Я разделил фрейм данных по местоположениям (Store_ID) и циклбудет печатать каждый Store_ID, но, поскольку корреляции в каждой итерации одинаковы, я подозреваю, что он просто использует весь набор данных, а не перебирает фрейм данных в dict.
Я начал с:
stores = df.Store_ID.unique()
storedict = {elem : pd.DataFrame() for elem in stores}
for key in storedict.keys():
storedict[key] = df[:][df.Store_ID == key]
np.array(storedict)
печатает массив, сгруппированный по каждому местоположению.
Но этот цикл (ниже), хотя он итерирует по хранилищам при печати, кажется, возвращает те же коэффициенты корреляции, как если бы он просто повторялКорреляция Пирсона по всему набору местоположений (магазинов).
Я пытаюсь показать, например, идентификатор магазина и матрицу корреляции для данных, связанных с этим идентификатором магазина, затем следующуюИдентификатор магазина и его корреляционная матрица, и так далее ...
Я, должно быть, упускаю что-то идиотское очевидное Вот.Что это?
РЕДАКТИРОВАТЬ:
Итак, когда я запускаю:
for store in stores:
print("\r")
print(store)
pd.set_option('display.width', 100)
pd.set_option('precision', 3)
correlations = data.corr(method='pearson')
print(correlations)
, я получаю тот же список корреляций.Интересно, это потому, что data
определяется глобально как:
data = df.drop(['datestring'], axis=1)
data.index = df.datestring
values = data.values
Я думаю, data.corr
игнорирует кортеж и смотрит на исходный фрейм данных.Как определить корреляции так, чтобы они выполнялись итеративно для «данных» из каждого хранилища, а не из всех хранилищ?Опять же, здесь я хотел итеративно разделить один фрейм данных на несколько и выполнить корреляцию для каждого хранилища в виде отдельного фрейма данных (или, тем не менее, проще всего заставить его работать без увеличения объема кода для решения чего-то, что могло бы бытьпетельные.