Movies ratings and rankings example

Packages to load

[1]:
import ratingslib.ratings as rl
import pandas as pd
from ratingslib.datasets.filenames import FILENAME_MOVIES_EXAMPLE, dataset_path
from ratingslib.datasets.parse import create_pairs_data, parse_pairs_data
from ratingslib.utils.methods import parse_columns

Prepare data

[2]:
filename = dataset_path(FILENAME_MOVIES_EXAMPLE)
user_movie_df = pd.read_csv(filename, index_col='User')

Create movie-movie dataframe. Movies are placed in pairs which means that every pair is a hypothetical matchup. The columns of movie_movie dataframe are set in COLUMNS dictionary.

[3]:
COLUMNS = {'item_i': 'MovieI',
           'item_j': 'MovieJ',
           'points_i': 'RatingI',
           'points_j': 'RatingJ'
           }

col_names = parse_columns(COLUMNS)
movie_movie_df = create_pairs_data(user_movie_df, columns_dict=COLUMNS)

Parse movie-movie dataframe as pairs data.

[4]:
data_df, items_df = parse_pairs_data(movie_movie_df, columns_dict=COLUMNS)

Colley method

[5]:
rl.Colley().rate(data_df, items_df,
                          columns_dict=COLUMNS, sort=True)
[5]:
Item rating ranking
2 Movie3 0.750 1
1 Movie2 0.425 2
0 Movie1 0.325 3

Massey method

[6]:
rl.Massey().rate(data_df, items_df,
                          columns_dict=COLUMNS, sort=True)
[6]:
Item rating ranking
2 Movie3 1.166667 1
1 Movie2 0.104167 2
0 Movie1 -1.270833 3

Keener method

[7]:
rl.Keener(normalization=True).rate(data_df, items_df,
                                            columns_dict=COLUMNS,
                                            sort=True)
[7]:
Item rating ranking
2 Movie3 0.510552 1
1 Movie2 0.288870 2
0 Movie1 0.200577 3

Offense-Defense method

[8]:
rl.OffenseDefense(tol=0.001).rate(data_df, items_df,
                                       columns_dict=COLUMNS, sort=True)
[8]:
Item rating ranking
2 Movie3 21.998853 1
1 Movie2 15.821345 2
0 Movie1 10.618677 3