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