def calc_yearly_diff(rc,rid,load_saved=[True,True],save_file=[False,False],
                     filename=['MaleRankCountDiffIndex.csv','MaleRankCountDiffCount.csv'],verbose=False):
    # loading data
    isloaded = [False,False]
    if len(load_saved) == 2 and len(filename) == 2:
        if verbose: print("Trying to import from "+filename[0]+" and "+filename[1])
        if load_saved[0]:
            rc_diffi = data.import_csv(file=filename[0])
            if rc_diffi.__len__() > 0:
                isloaded[0] = True
        if load_saved[1]:
            rc_diffc = data.import_csv(file=filename[1])
            if rc_diffc.__len__() > 0:
                isloaded[1] = True
        if isloaded[0] and isloaded[1]:
            if verbose: print("Import successful")
            return rc_diffi, rc_diffc
    if not isloaded[0]: rc_diffi = pd.DataFrame(index=rc.index,columns=rc.columns[1:],dtype='int')
    if not isloaded[1]: rc_diffc = pd.DataFrame(index=rc.index,columns=rc.columns[1:],dtype='int')
    prev_yr = rc.columns[0]
    # Calculating first index of NaN values to improve looping efficiency when searching previous year data
    lens = rc.count(axis=0)
    # Starting calculations
    for cur_yr in rc.columns[1:]:
        for i in rc.index[:lens[cur_yr]]:
            prev_count = 0
            cur_id = rid[cur_yr][i]
            res = rid[prev_yr][rid[prev_yr]==cur_id].index
            if res.size:
                prev_count = rc[prev_yr][res[0]]
            else:
                res = [lens[cur_yr]]
            rc_diffi[cur_yr][i] = i - res[0]
            rc_diffc[cur_yr][i] = rc[cur_yr][i] - prev_count
        if verbose: print("Year: "+str(cur_yr))
        prev_yr = cur_yr

    #Saving data
    if len(save_file) == 2:
        if save_file[0]:
            data.export_data(df=rc_diffi,filename=filename[0],path='data')
        if save_file[1]:
            data.export_data(df=rc_diffi,filename=filename[1],path='data')
    return rc_diffi,rc_diffc
def import_dfs(filenames,load_saved,verbose):
    dfs = [[]]*len(filenames)
    isloaded = [False]*len(filenames)
    if len(load_saved) == len(filenames) and len(load_saved)==len(dfs):
        if verbose:
            print("Trying to import from these files:")
            for file in filenames:
                print(file)
        for i in range(len(dfs)):
            if load_saved[i]:
                dfs[i] = data.import_csv(file=filenames[i])
                if dfs[i].__len__() > 0:
                    isloaded[i] = True
        if all(isloaded):
            if verbose: print("Import successful")
    return dfs,isloaded