code: def file_change_rates(self, branch='master', limit=None, coverage=False, days=None, ignore_globs=None, include_globs=None):
          
  
          columns = ['unique_committers', 'abs_rate_of_change', 'net_rate_of_change', 'net_change', 'abs_change', 'edit_rate', 'repository']
          if coverage:
              columns += ['lines_covered', 'total_lines', 'coverage']
          df = pd.DataFrame(columns=columns)
  
          for repo in self.repos:
              try:
                  fcr = repo.file_change_rates(
                      branch=branch,
                      limit=limit,
                      coverage=coverage,
                      days=days,
                      ignore_globs=ignore_globs,
                      include_globs=include_globs
                  )
                  fcr['repository'] = repo.repo_name
                  df = df.append(fcr)
              except GitCommandError:
                  print('Warning! Repo: %s seems to not have the branch: %s' % (repo, branch))
  
          df.reset_index()
  
          return df
docs: This function will return a DataFrame containing some basic aggregations of the file change history data, and
          optionally test coverage data from a coverage_data.py .coverage file.  The aim here is to identify files in the
          project which have abnormal edit rates, or the rate of changes without growing the files size.  If a file has
          a high change rate and poor test coverage, then it is a great candidate for writing more tests.
  
          :param branch: (optional, default=master) the branch to return commits for
          :param limit: (optional, default=None) a maximum number of commits to return, None for no limit
          :param coverage: (optional, default=False) a bool for whether or not to attempt to join in coverage data.
          :param days: (optional, default=None) number of days to return if limit is None
          :param ignore_globs: (optional, default=None) a list of globs to ignore, default none excludes nothing
          :param include_globs: (optinal, default=None) a list of globs to include, default of None includes everything.
          :return: DataFrame