ИЗОБРАЖЕН ПОКАЗАТЬ ПРИМЕР ОРИГИНАЛЬНОГО DATAFRAME:
df.head(4)
shop category subcategory season
date
2013-09-04 abc weddings shoes winter
2013-09-04 def jewelry watches summer
2013-09-05 ghi sports sneakers spring
2013-09-05 jkl jewelry necklaces fall
Я успешно создал следующий фреймворк с использованием get_dummies():
wedding_seasons = pd.get_dummies(df.loc[df['category']=='weddings',['category','season']],prefix = '', prefix_sep = '' )
wedding_seasons.head(3)
weddings winter summer spring fall
71654 1.0 0.0 1.0 0.0 0.0
72168 1.0 0.0 1.0 0.0 0.0
72080 1.0 0.0 1.0 0.0 0.0
Цель вышеизложенного - помочь оценить частоту свадьбы в течение сезонов, поэтому я использовал corr()
для создания следующего результата:
weddings fall spring summer winter
weddings NaN NaN NaN NaN NaN
fall NaN 1.000000 0.054019 -0.331866 -0.012122
spring NaN 0.054019 1.000000 -0.857205 0.072420
summer NaN -0.331866 -0.857205 1.000000 -0.484578
winter NaN -0.012122 0.072420 -0.484578 1.000000
Я не уверен, почему свадебная колонка генерирует ценности NaN, но мое чувство кишки состоит в том, что она происходит от того, как я изначально создал wedding_seasons
. Любое руководство было бы высоко оценено, чтобы я мог правильно оценить корреляции столбцов.
Я не думаю, что вас интересует здесь "корреляция".
Все столбцы в wedding_seasons
содержат значения с плавающей запятой; однако, если мои подозрения верны, строки в исходном фрейме df
содержат что-то вроде записей транзакций, где каждая строка соответствует отдельному лицу.
Скажите, пожалуйста, если я ошибаюсь, но я продолжу свои рассуждения.
Корреляция будет измерять, интуитивно, тенденция значений изменяется вместе/друг против друга в рамках одного и того же наблюдения (например, если X и Y отрицательно коррелированы, то, когда мы видим, что X превышает его среднее значение, мы ожидаем, что Y окажется ниже его среднего).
Однако то, что у вас есть здесь, - это данные, где, если одна транзакция - summer
, то категорически нельзя одновременно быть winter
. Когда вы создаете wedding_seasons
, Pandas создает фиктивные переменные, которые рассматриваются как значения с плавающей запятой при вычислении вашей корреляционной матрицы; так как невозможно, чтобы какая-либо строка содержала два 1.0
ввода одновременно, ясно, что ваша результирующая матрица корреляции будет иметь отрицательные записи во всем мире.
Вы можете сбросить стол свадьбы, прежде чем делать corr()
.
wedding_seasons.drop(columns = ['weddings'])
weddings
, но я не хочу, чтобы он просто фильтровал weddings
из исходного столбца category
. Идея состоит в том, чтобы использовать манекены, чтобы определить, какие из всех рядов имеют weddings
в качестве входных данных. Это эффективно позволит мне провести корреляцию с сезоном, иначе это будет NaN
weddings
? если он постоянен, тогда.corr()
для этого всегда будетNaN
.df
. Глядя наwedding_seasons
, я чувствую, что функцияloc()
- это то, что только фильтрует значенияweddings
когда она действительно должна сканировать каждую строку, и выдает 0, когда запись - это нечто иное, чемweddings
. Мысли?