docstr: normalize data
  
  Attention
  ---------
  qlib_data_1d_dir cannot be None, normalize 5min needs to use 1d data;
  
      qlib_data_1d can be obtained like this:
          $ python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn --version v3
      or:
          download 1d data, reference: https://github.com/microsoft/qlib/tree/main/scripts/data_collector/yahoo#1d-from-yahoo
  
  Examples
  ---------
      $ python collector.py normalize_data --qlib_data_1d_dir ~/.qlib/qlib_data/cn_data --source_dir ~/.qlib/stock_data/source/hs300_5min_original --normalize_dir ~/.qlib/stock_data/source/hs300_5min_nor --region HS300 --interval 5min
code: def normalize_data(
      self,
      date_field_name: str = "date",
      symbol_field_name: str = "symbol",
      end_date: str = None,
      qlib_data_1d_dir: str = None,
  ):
      """normalize data
  
      Attention
      ---------
      qlib_data_1d_dir cannot be None, normalize 5min needs to use 1d data;
  
          qlib_data_1d can be obtained like this:
              $ python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn --version v3
          or:
              download 1d data, reference: https://github.com/microsoft/qlib/tree/main/scripts/data_collector/yahoo#1d-from-yahoo
  
      Examples
      ---------
          $ python collector.py normalize_data --qlib_data_1d_dir ~/.qlib/qlib_data/cn_data --source_dir ~/.qlib/stock_data/source/hs300_5min_original --normalize_dir ~/.qlib/stock_data/source/hs300_5min_nor --region HS300 --interval 5min
      """
      if (
          qlib_data_1d_dir is None
          or not Path(qlib_data_1d_dir).expanduser().exists()
      ):
          raise ValueError(
              "If normalize 5min, the qlib_data_1d_dir parameter must be set: --qlib_data_1d_dir <user qlib 1d data >, Reference: https://github.com/microsoft/qlib/tree/main/scripts/data_collector/yahoo#automatic-update-of-daily-frequency-datafrom-yahoo-finance"
          )
      super(Run, self).normalize_data(
          date_field_name,
          symbol_field_name,
          end_date=end_date,
          qlib_data_1d_dir=qlib_data_1d_dir,
      )
  
imports: import sys
  import copy
  import fire
  import numpy
  import pandas
  import baostock
  from tqdm import tqdm
  from pathlib import Path
  from loguru import logger
  from typing import Iterable, List
  import qlib
  from qlib.data import D
  from data_collector.base import BaseCollector, BaseNormalize, BaseRun
  from data_collector.utils import generate_minutes_calendar_from_daily, calc_adjusted_price
label_desc: Use image node_id 6 for calling the Run obj's underlying member method code with example usage: obj.normalize_data(date_field_name, symbol_field_name, end_date, qlib_data_1d_dir) without return types