class_docstr: Code for reading current MovieLens data sets, including ML-20M, ML-Latest, and
  ML-Latest-Small.
  
  Parameters:
      path(str or pathlib.Path): Path to the directory containing the data set.
class_docstr_tok: ["Code","for","reading","current","MovieLens","data","sets",",","including","ML-20M",",","ML-Latest",",","and","ML-Latest-Small",".","Parameters",":","path","(","str","or","pathlib.Path",")",":","Path","to","the","directory","containing","the","data","set","."]
docstr: The movie table, with titles and genres.  It is indexed by movie ID.
  
  >>> mlsmall = MovieLens('data/ml-latest-small')
  >>> mlsmall.movies
                                                      title                                           genres
  item
  1                                        Toy Story (1995)      Adventure|Animation|Children|Comedy|Fantasy
  2                                          Jumanji (1995)                       Adventure|Children|Fantasy
  3                                 Grumpier Old Men (1995)                                   Comedy|Romance
  4                                Waiting to Exhale (1995)                             Comedy|Drama|Romance
  5                      Father of the Bride Part II (1995)                                           Comedy
  ...
  [9125 rows x 2 columns]
docstr_tok: ["The","movie","table",",","with","titles","and","genres",".","It","is","indexed","by","movie","ID",".",">",">",">","mlsmall","=","MovieLens","(","'data\/ml-latest-small","'",")",">",">",">","mlsmall.movies","title","genres","item","1","Toy","Story","(","1995",")","Adventure|Animation|Children|Comedy|Fantasy","2","Jumanji","(","1995",")","Adventure|Children|Fantasy","3","Grumpier","Old","Men","(","1995",")","Comedy|Romance","4","Waiting","to","Exhale","(","1995",")","Comedy|Drama|Romance","5","Father","of","the","Bride","Part","II","(","1995",")","Comedy","...","[","9125","rows","x","2","columns","]"]
code: def movies(self):
      """
      The movie table, with titles and genres.  It is indexed by movie ID.
  
      >>> mlsmall = MovieLens('data/ml-latest-small')
      >>> mlsmall.movies
                                                          title                                           genres
      item
      1                                        Toy Story (1995)      Adventure|Animation|Children|Comedy|Fantasy
      2                                          Jumanji (1995)                       Adventure|Children|Fantasy
      3                                 Grumpier Old Men (1995)                                   Comedy|Romance
      4                                Waiting to Exhale (1995)                             Comedy|Drama|Romance
      5                      Father of the Bride Part II (1995)                                           Comedy
      ...
      [9125 rows x 2 columns]
      """
  
      fn = self.path / "movies.csv"
      movies = pd.read_csv(
          fn,
          dtype={
              "movieId": np.int32,
              "title": object,
              "genres": object,
          },
      )
      movies.rename(columns={"movieId": "item"}, inplace=True)
      movies.set_index("item", inplace=True)
      _log.debug(
          "loaded %s, takes %d bytes", fn, movies.memory_usage().sum()
      )
      return movies
  
imports: import os.path
  from pathlib import Path
  import logging
  import pandas
  import numpy
  from lenskit.util import cached
label_desc: Use image node_id 3 for calling the MovieLens obj's underlying member method code with example usage: obj.movies() and returns: movies