code: def chicago(return_X_y=True):
      
      # recommend PoissonGAM
      chi = pd.read_csv(PATH + '/chicago.csv', index_col=0).astype(float)
      if return_X_y:
          chi = chi[['time', 'tmpd', 'pm10median', 'o3median', 'death']].dropna()
  
          X = chi[['time', 'tmpd', 'pm10median', 'o3median']].values
          y = chi['death'].values
  
          return X, y
      else:
          return chi
docs: Chicago air pollution and death rate data
  
      Parameters
      ----------
      return_X_y : bool,
          if True, returns a model-ready tuple of data (X, y)
          otherwise, returns a Pandas DataFrame
  
      Returns
      -------
      model-ready tuple of data (X, y)
          OR
      Pandas DataFrame
  
      Notes
      -----
      X contains [['time', 'tmpd', 'pm10median', 'o3median']], with no NaNs
  
      y contains 'death', the deaths per day, with no NaNs
  
      Source:
      R gamair package
      `data(chicago)`
  
      Notes
      -----
      https://cran.r-project.org/web/packages/gamair/gamair.pdf
      https://rdrr.io/cran/gamair/man/chicago.html
  
      Columns:
      death : total deaths (per day).
      pm10median : median particles in 2.5-10 per cubic m
      pm25median : median particles < 2.5 mg per cubic m (more dangerous).
      o3median : Ozone in parts per billion
      so2median : Median Sulpher dioxide measurement
      time : time in days
      tmpd : temperature in fahrenheit