docstr: Evaluates an expression query over a range of time.
  
  :param query: Prometheus expression query string.
  :param start: Start timestamp.
  :param end: End timestamp.
  :param step: Query resolution step width in `duration` format or float number of seconds.
  :param timeout: Evaluation timeout. Optional.
  :return: Pandas DataFrame.
docstr_tok: ["Evaluates","an","expression","query","over","a","range","of","time",".",":","param","query",":","Prometheus","expression","query","string",".",":","param","start",":","Start","timestamp",".",":","param","end",":","End","timestamp",".",":","param","step",":","Query","resolution","step","width","in","`","duration","`","format","or","float","number","of","seconds",".",":","param","timeout",":","Evaluation","timeout",".","Optional",".",":","return",":","Pandas","DataFrame","."]
code: def query_range(
      self,
      query: str,
      start: Timestamp,
      end: Timestamp,
      step: Union[Duration, float],
      timeout: Optional[Duration] = None,
  ) -> Matrix:
      """
      Evaluates an expression query over a range of time.
  
      :param query: Prometheus expression query string.
      :param start: Start timestamp.
      :param end: End timestamp.
      :param step: Query resolution step width in `duration` format or float number of seconds.
      :param timeout: Evaluation timeout. Optional.
      :return: Pandas DataFrame.
      """
      params = {
          "query": query,
          "start": _timestamp(start),
          "end": _timestamp(end),
          "step": _duration(step),
      }
  
      if timeout is not None:
          params["timeout"] = _duration(timeout)
  
      return to_pandas(self._do_query("api/v1/query_range", params))
  
file_path: BigDL/python/chronos/src/bigdl/chronos/data/utils/prometheus_df.py
imports: import datetime
  import json
  from typing import Optional, Union
  from urllib.parse import urljoin
  import numpy
  import pandas
  import requests
  from bigdl.nano.utils.common import invalidInputError
label_desc: Use image node_id 4 for calling the Prometheus obj's underlying member method code with example usage: obj.query_range(query, start, end, step, timeout) and returns: to_pandas