Как удалить значения NaN из вывода функции corr ()

1

ИЗОБРАЖЕН ПОКАЗАТЬ ПРИМЕР ОРИГИНАЛЬНОГО 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. Любое руководство было бы высоко оценено, чтобы я мог правильно оценить корреляции столбцов.

  • 2
    Меняется ли ценность weddings ? если он постоянен, тогда .corr() для этого всегда будет NaN .
  • 0
    @HarvIpan это хороший момент - я отредактировал свой пост выше, чтобы показать примеры строк моего оригинального df . Глядя на wedding_seasons , я чувствую, что функция loc() - это то, что только фильтрует значения weddings когда она действительно должна сканировать каждую строку, и выдает 0, когда запись - это нечто иное, чем weddings . Мысли?
Показать ещё 4 комментария
Теги:
pandas
correlation
dummy-variable

2 ответа

1

Я не думаю, что вас интересует здесь "корреляция".

Все столбцы в wedding_seasons содержат значения с плавающей запятой; однако, если мои подозрения верны, строки в исходном фрейме df содержат что-то вроде записей транзакций, где каждая строка соответствует отдельному лицу.

Скажите, пожалуйста, если я ошибаюсь, но я продолжу свои рассуждения.

Корреляция будет измерять, интуитивно, тенденция значений изменяется вместе/друг против друга в рамках одного и того же наблюдения (например, если X и Y отрицательно коррелированы, то, когда мы видим, что X превышает его среднее значение, мы ожидаем, что Y окажется ниже его среднего).

Однако то, что у вас есть здесь, - это данные, где, если одна транзакция - summer, то категорически нельзя одновременно быть winter. Когда вы создаете wedding_seasons, Pandas создает фиктивные переменные, которые рассматриваются как значения с плавающей запятой при вычислении вашей корреляционной матрицы; так как невозможно, чтобы какая-либо строка содержала два 1.0 ввода одновременно, ясно, что ваша результирующая матрица корреляции будет иметь отрицательные записи во всем мире.

0

Вы можете сбросить стол свадьбы, прежде чем делать corr().

wedding_seasons.drop(columns = ['weddings'])
  • 0
    Я хочу сохранить столбец weddings , но я не хочу, чтобы он просто фильтровал weddings из исходного столбца category . Идея состоит в том, чтобы использовать манекены, чтобы определить, какие из всех рядов имеют weddings в качестве входных данных. Это эффективно позволит мне провести корреляцию с сезоном, иначе это будет NaN
  • 0
    Я не думаю, что отвечает на вопрос. :(
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню