class_docstr: Provides methods for retrieving daily stock data from
  tushare API
  Attributes
  ----------
      start_date : str
          start date of the data (modified from config.py)
      end_date : str
          end date of the data (modified from config.py)
      ticker_list : list
          a list of stock tickers (modified from config.py)
  Methods
  -------
  fetch_data()
      Fetches data from tushare API
  date: date
  Open: opening price
  High: the highest price
  Close: closing price
  Low: lowest price
  Volume: volume
  Price_change: price change
  P_change: fluctuation
  ma5: 5-day average price
  Ma10: 10 average daily price
  Ma20:20 average daily price
  V_ma5:5 daily average
  V_ma10:10 daily average
  V_ma20:20 daily average
code: def select_equal_rows_stock(self, df):
      df_check = df.tic.value_counts()
      df_check = pd.DataFrame(df_check).reset_index()
      df_check.columns = ["tic", "counts"]
      mean_df = df_check.counts.mean()
      equal_list = list(df.tic.value_counts() >= mean_df)
      names = df.tic.value_counts().index
      select_stocks_list = list(names[equal_list])
      df = df[df.tic.isin(select_stocks_list)]
      return df
  
imports: from __future__ import annotations
  import pandas
  import tushare
  from tqdm import tqdm
label_desc: Use image node_id 3 for calling the TushareDownloader obj's underlying member method code with example usage: obj.select_equal_rows_stock(df) and returns: df