code: def load_flight(
      month_filter=None,
      categorical_filter=None,
      nrows=None,
      demo=True,
      return_single_table=False,
      verbose=False,
  ):
      """
      Download, clean, and filter flight data from 2017.
      The original dataset can be found `here <https://www.transtats.bts.gov/ot_delay/ot_delaycause1.asp>`_.
  
      Args:
  
          month_filter (list[int]): Only use data from these months (example is ``[1, 2]``).
              To skip, set to None.
          categorical_filter (dict[str->str]): Use only specified categorical values.
              Example is ``{'dest_city': ['Boston, MA'], 'origin_city': ['Boston, MA']}``
              which returns all flights in OR out of Boston. To skip, set to None.
          nrows (int): Passed to nrows in ``pd.read_csv``. Used before filtering.
          demo (bool): Use only two months of data. If False, use the whole year.
          return_single_table (bool): Exit the function early and return a dataframe.
          verbose (bool): Show a progress bar while loading the data.
  
      Examples:
  
          .. ipython::
              :verbatim:
  
              In [1]: import featuretools as ft
  
              In [2]: es = ft.demo.load_flight(verbose=True,
                 ...:                          month_filter=[1],
                 ...:                          categorical_filter={'origin_city':['Boston, MA']})
              100%|xxxxxxxxxxxxxxxxxxxxxxxxx| 100/100 [01:16<00:00,  1.31it/s]
  
              In [3]: es
              Out[3]:
              Entityset: Flight Data
                DataFrames:
                  airports [Rows: 55, Columns: 3]
                  flights [Rows: 613, Columns: 9]
                  trip_logs [Rows: 9456, Columns: 22]
                  airlines [Rows: 10, Columns: 1]
                Relationships:
                  trip_logs.flight_id -> flights.flight_id
                  flights.carrier -> airlines.carrier
                  flights.dest -> airports.dest
      """
  
      filename, csv_length = get_flight_filename(demo=demo)
  
      print("Downloading data ...")
      url = "https://oss.alteryx.com/datasets/{}?library=featuretools&version={}".format(
          filename,
          ft.__version__,
      )
  
      chunksize = math.ceil(csv_length / 99)
      pd.options.display.max_columns = 200
      iter_csv = pd.read_csv(
          url,
          compression="zip",
          iterator=True,
          nrows=nrows,
          chunksize=chunksize,
      )
      if verbose:
          iter_csv = tqdm(iter_csv, total=100)
  
      partial_df_list = []
      for chunk in iter_csv:
          df = filter_data(
              _clean_data(chunk),
              month_filter=month_filter,
              categorical_filter=categorical_filter,
          )
          partial_df_list.append(df)
      data = pd.concat(partial_df_list)
  
      if return_single_table:
          return data
  
      es = make_es(data)
  
      return es
  
file_path: featuretools/featuretools/demo/flight.py
imports: import math
  import re
  import pandas
  from tqdm import tqdm
  from woodwork.logical_types import Boolean, Categorical, Ordinal
  import featuretools
label_desc: Use image node_id 1 for calling a global function with example usage: load_flight(month_filter, categorical_filter, nrows, demo, return_single_table, verbose) and returns: es, data