def df_to_table(df, incl_vars, categorical, nonnormal, groupvar, pval, labels, order, missing): df_cols = list(df) # this is the list of columns for which Table 1 is generated col_list = [df_col for df_col in incl_vars] my_table = TableOne(df, columns=col_list, groupby=groupvar, nonnormal=nonnormal, categorical=categorical, pval=pval, missing=missing, label_suffix=True, rename=labels, order=order) my_table_html = my_table.to_html( classes=["table", "table-dark", 'table-sm']) return my_table_html
data = pd.read_csv('./data/20210602-134857-completed/dataset.csv') # ------------------------ # Create tableone # ------------------------ # Columns columns = ['age', 'gender', 'haematocrit_percent', 'plt'] # Categorical categorical = ['gender'] # Groupby groupby = ['cvs_hos_split'] # mytable = TableOne(data, columns, categorical, groupby) ######################################################## # Show # mytable.tableone ######################################################## # Show (HTML) # # Html html = mytable.to_html() # show print(html)
MYCATEGORICAL = set() for name, mytype in zip(data.dtypes.index, data.dtypes.values): if mytype == object: MYCATEGORICAL.add(name) for c in categorical: MYCATEGORICAL.add(c) MYCATEGORICAL = list(MYCATEGORICAL) if len(MYCATEGORICAL) > 0 else None # create grouped_table with p values # API: https://tableone.readthedocs.io/en/latest/tableone.html # Example: https://github.com/tompollard/tableone/blob/master/tableone.ipynb grouped_table = TableOne(data, categorical=MYCATEGORICAL, groupby=group, nonnormal=nonnormal, label_suffix=True, pval=pval) print(grouped_table) if outfile: if outFMT == 'csv': grouped_table.to_csv(outfile) elif outFMT == 'latex': grouped_table.to_latex(outfile) elif outFMT == 'html': grouped_table.to_html(outfile) sys.stdout.flush() sys.stdout.close() sys.stderr.flush() sys.stderr.close()
def data_dash2(request, doc_id ): doc=get_object_or_404(Document, id=doc_id) ######################################################################### WARN_MESSAGE=dataCheck(doc_id) if WARN_MESSAGE[2] == 'EMPTY' : df = pd.read_csv('figures/static/tmpdata/'+doc.domain+'.csv',encoding="iso-8859-1") df_raw = df df = df.rename(columns=lambda x: x.upper()) ##########################Data for Pie plot############################# df_a=df.groupby(['RACE']).count() bar_all=df_a['USUBJID'].values.tolist() ##########################Data for Bar Chart############################# df_f=df[(df.SEX == "F")].groupby(['RACE']).count() df_m=df[(df.SEX == "M")].groupby(['RACE']).count() bar_male=df_m['USUBJID'].values.tolist() bar_female=df_f['USUBJID'].values.tolist() df['RACE']=df['RACE'].str.split(" ", n = 1, expand = True) bar_labels = mark_safe(df.RACE.unique().tolist()) ###Height and Weight are available then we calculate BMI if WARN_MESSAGE[1] == '' : df['BMIBL'] = df[WARN_MESSAGE[4]] / ((df[WARN_MESSAGE[3]]/100)**2) WV={} age_f0 = [] age_m0 = [] bgcolor_arm = ['rgba(46, 204, 113, 0.4)','rgba(252, 185, 65, 0.4)','rgba(129, 207, 224, 0.4)','rgba(255, 99, 132, 0.4)','yellow'] bocolor_arm = ['rgba(46, 204, 113, 1)','rgba(252, 185, 65, 1)','rgba(129, 207, 224, 1)','rgba(255, 99, 132, 1)','rgba(245, 230, 83, 1)'] if "ARMCD" not in list(df) : df['ARMCD'] = df['ARM'] armcd=df.ARMCD.unique().tolist() arml=df.ARM.unique().tolist() for num,val in enumerate(armcd, start=1): age_f0.append(df[(df.SEX == "F") & (df.ARMCD == val)]['AGE'].values.tolist() ) age_m0.append(df[(df.SEX == "M") & (df.ARMCD == val)]['AGE'].values.tolist() ) if num == 1 : df.loc[df['ARMCD'] == val, 'ARM'] = mark_safe('<span class="label label-success">' + arml[num-1] + '</span>') if num == 2 : df.loc[df['ARMCD'] == val, 'ARM'] = mark_safe('<span class="label label-warning">' + arml[num-1] + '</span>') if num == 3 : df.loc[df['ARMCD'] == val, 'ARM'] = mark_safe('<span class="label label-info">' + arml[num-1] + '</span>') if num == 4 : df.loc[df['ARMCD'] == val, 'ARM'] = mark_safe('<span class="label label-danger">' + arml[num-1] + '</span>') ###Height and Weight are available if WARN_MESSAGE[1] == '' : dftmp=df[(df['ARMCD'] == val)] dftmp['BMIBL']=dftmp['BMIBL']/3 WTMP = dftmp[[WARN_MESSAGE[3],WARN_MESSAGE[4],'BMIBL']].to_json(orient='records').replace('"','').replace(WARN_MESSAGE[3],"y").replace('BMIBL',"r").replace(WARN_MESSAGE[4],"x") WTMP_ =mark_safe( "label: ['"+ val +"'],data:" + WTMP + ",backgroundColor: '"+bgcolor_arm[num-1]+"',borderColor: '"+bocolor_arm[num-1] +"', borderWidth: 1" ) WV['line_dict_{}'.format(num)] = WTMP_ age_f=age_f0 age_m=age_m0 box_labels = mark_safe(armcd) listing=df[["USUBJID", "SITEID", "ARM", "AGE", "SEX"] ].values.tolist() ###Demographic tableone columns = ['AGE','SEX','RACE','ARM'] categorical = ['SEX','RACE'] groupby = ['ARM'] mytable = TableOne(df, columns, categorical, groupby,isnull=False,) mytablej = mark_safe(mytable.to_html(classes='stripe row-border order-column').replace('<','<').replace('>','>').replace('<table border="1" class="dataframe stripe row-border order-column">','<table class="table no-margin">')) if WARN_MESSAGE[0] == '' : FLAG_ = flag_var(doc_id) flag1=FLAG_[0] flag2=FLAG_[1] c_flag1= df_f=df[(df[flag1] == "Y")]['USUBJID'].count() c_flag2= df_f=df[(df[flag2] == "Y")]['USUBJID'].count() p_flag1=100*c_flag1/df['USUBJID'].count() p_flag2=100*c_flag2/df['USUBJID'].count() return render(request, 'figures/data_dash2.html', { 'document':doc,'bar_all':bar_all,'bar_male':bar_male, 'bar_female':bar_female, 'bar_labels':bar_labels,'box_labels':box_labels,'age_f':age_f,'age_m':age_m,'listing':listing[:10] ,'WARN_MESSAGE':WARN_MESSAGE,'FLAG1':flag1,'FLAG2':flag2,'C_FLAG1':c_flag1,'C_FLAG2':c_flag2,'P_FLAG1':p_flag1,'P_FLAG2':p_flag2,'WV':WV,'mytable' : mytablej} ) else : return render(request, 'figures/CDISC_ERROR.html', { 'document':doc, 'CDISC_ERROR' :WARN_MESSAGE[2] } )