Счет появления значений в двух столбцах стимулирующим образом, питон - PullRequest
0 голосов
/ 24 августа 2018

Добрый день,

У меня есть вопрос, очень простой вопрос. Допустим, у меня есть набор данных с пользовательскими рейтингами фильма в строках и фильмов в столбцах. Мне нужно найти фильмы, которые происходят с фильмом2. Например, для фильма1 процент людей, которые оценили фильм1, также оценил фильм1, равный 0,5; число людей, которые смотрели оба фильма: фильм1 и фильм2 - 1, деленное на общее число людей, которые посмотрели фильм и оценили его2.

Dataset:

import numpy as np
df = np.array([['','Movie1','Movie2','Movie3'],
                ['User1',1,0,2],
                ['User2',2,4,4],
                ['User3',4,0,4],
                ['User4',0,2,4]])
print(pd.DataFrame(data=df[1:,1:],
                  index=df[1:,0],
                  columns=df[0,1:]))

В строке ниже указано количество пользователей, которые оценили фильм. Мой вопрос заключается в том, как добавить еще одно условие, которое также проверяет, не является ли соответствующая ячейка в col movie2 0 - 0, означает, что человек не видел фильм, он был помечен как отсутствующее значение в исходном наборе данных:

df.apply(lambda x: x[x!=0]).count(axis=0)

1 Ответ

0 голосов
/ 24 августа 2018

Две вещи в вашем коде

1-й вы создаете фрейм данных с помощью np.array, основываясь на официальном документе, np.array, принимайте только один тип данных за раз, поэтому ваш numeric автоматически преобразуется в string

df.applymap(type)
Out[787]: 
              Movie1         Movie2         Movie3
User1  <class 'str'>  <class 'str'>  <class 'str'>
User2  <class 'str'>  <class 'str'>  <class 'str'>
User3  <class 'str'>  <class 'str'>  <class 'str'>
User4  <class 'str'>  <class 'str'>  <class 'str'>

2й раствор

maskdf=df.ne('0')

maskdf.Movie1[maskdf.Movie2].mean()
Out[795]: 0.5

Измените apply код

df.ne('0').sum(axis=1)
Out[786]: 
User1    2
User2    3
User3    2
User4    2
dtype: int64


df.ne('0').sum()
Out[788]: 
Movie1    3
Movie2    2
Movie3    4
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...