class_docstr: MovieLens 1M data set.
  
  .. note::
     Some documentation examples use ML-10M100K; that is because this class shares implementation
     with the 10M data set.
class_docstr_tok: ["MovieLens","1M","data","set",".","..","note",":",":","Some","documentation","examples","use","ML-10M100K",";","that","is","because","this","class","shares","implementation","with","the","10M","data","set","."]
docstr: Return the movie data (from ``users.dat``).  Indexed by user ID.
  
  >>> ml = ML1M()
  >>> ml.users
       gender  age    zip
  user
  1         F    1  48067
  2         M   56  70072
  3         M   25  55117
  4         M   45  02460
  5         M   25  55455
  ...
  [6040 rows x 3 columns]
docstr_tok: ["Return","the","movie","data","(","from","``","users.dat","``",")",".","Indexed","by","user","ID",".",">",">",">","ml","=","ML1M","(",")",">",">",">","ml.users","gender","age","zip","user","1","F","1","48067","2","M","56","70072","3","M","25","55117","4","M","45","02460","5","M","25","55455","...","[","6040","rows","x","3","columns","]"]
code: def users(self):
      """
      Return the movie data (from ``users.dat``).  Indexed by user ID.
  
      >>> ml = ML1M()
      >>> ml.users
           gender  age    zip
      user
      1         F    1  48067
      2         M   56  70072
      3         M   25  55117
      4         M   45  02460
      5         M   25  55455
      ...
      [6040 rows x 3 columns]
      """
      fn = self.path / "users.dat"
      users = pd.read_csv(
          fn,
          sep=":",
          header=None,
          names=[
              "user",
              "_ug",
              "gender",
              "_ga",
              "age",
              "_ao",
              "occupation",
              "_oz",
              "zip",
          ],
          usecols=[0, 2, 4, 8],
          dtype={
              "user": np.int32,
              "gender": "category",
              "age": np.int8,
              "timestamp": np.int32,
          },
      )
      users.set_index("user", inplace=True)
      _log.debug("loaded %s", fn)
      return users
  
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 2 for calling the ML1M obj's underlying member method code with example usage: obj.users() and returns: users