Я читаю некоторые CSV-файлы из списка каталогов, а именно actual_results и Ожидаемые_результаты.Теперь я пролистываю каждый csv в actual_results и сравниваю его csvs в Ожидаемые_результаты.Затем я хочу отобразить все данные в HTML, как показано ниже:
Я уже написал некоторый код для фактической очистки данных и последующего сравнения фреймов данных для фактических и ожидаемых CSV.
Здесьэто весь код:
import pandas as pd
import sys
from glob import glob
import os
import itertools
# compareCSV takes in two args as path of the two csv files to compare
def compare(expectedList,actualList):
ctr=0
dfList = list()
for (csv1,csv2) in itertools.zip_longest(expectedList,actualList):
df1_ctr=pd.read_csv(csv1,sep=',')
df1_ctr[df1_ctr.columns[1:]] = [x.split('\t') for x in df1_ctr['mean(ms)']]
df1=df1_ctr.apply(pd.to_numeric,errors='coerce')
df2_ctr=pd.read_csv(csv2,sep=',')
df2_ctr[df2_ctr.columns[1:]] = [x.split('\t') for x in df2_ctr['mean(ms)']]
df2=df2_ctr.apply(pd.to_numeric,errors='coerce')
print("Dataframe for Expected List for file : {} is \n {}".format(csv1,df1))
print("Dataframe for Actual List for file: {} is \n {}".format(csv2,df2))
d3=df1.loc[:,:] # Dataframe 1
d4=df2.loc[:,:] # Dataframe 2
d5=abs(((d3.subtract(d4))/d3)*100)
print("Deviation between file {} and {} is :\n {}".format(csv1,csv2,d5))
ctr=ctr+1
#Final Data frame
df=pd.concat([df1,df2,d5])
#print("{}".format(df))
dfList.append(df)
#print("Final Data frame: \n{}".format(dfList))
# for data in dfList:
# print("data at index: \n{}".format(data))
if __name__ == "__main__":
#file1=sys.argv[1] # FileName1
#file2=sys.argv[2] #FileName2
#compareCSV(file1,file2) # Compare CSV files passed in as paramters
os.chdir("expected_results")
expectedCSVs=glob("*.csv")
#print(expectedCSVs)
os.chdir("../actual_results")
actualCSVs=glob("*.csv")
#print(actualCSVs)
compare(expectedCSVs,actualCSVs)
У меня есть несколько лишних операторов печати на данный момент.Вывод приведенного выше кода приведен ниже:
Dataframe for Expected List for file : CT_QRW_25.csv is
100%Q mean(ms) P50(ms) P99(ms) p99.9(ms) #Samples
0 NaN 0.038973 0.044939 0.091076 0.363859 1760108
1 NaN 0.050652 0.044963 0.094738 0.402525 1354233
2 NaN 0.046500 0.045020 0.108138 0.320636 123448
3 NaN 1.872630 0.599966 33.313200 172.040000 21954617
4 NaN 37.752900 0.600484 603.063000 805.340000 2708258
Dataframe for Actual List for file: CT_QRW_25.csv is
100%Q mean(ms) P50(ms) P99(ms) p99.9(ms) #Samples
0 NaN 0.038973 0.044939 0.091076 0.363859 1760108
1 NaN 0.050652 0.044963 0.094738 0.402525 1354233
2 NaN 0.046500 0.045020 0.108138 0.320636 123448
3 NaN 1.872630 0.599966 33.313200 172.040000 21954617
4 NaN 37.752900 0.600484 603.063000 805.340000 2708258
Deviation between file CT_QRW_25.csv and CT_QRW_25.csv is :
100%Q mean(ms) P50(ms) P99(ms) p99.9(ms) #Samples
0 NaN 0.0 0.0 0.0 0.0 0.0
1 NaN 0.0 0.0 0.0 0.0 0.0
2 NaN 0.0 0.0 0.0 0.0 0.0
3 NaN 0.0 0.0 0.0 0.0 0.0
4 NaN 0.0 0.0 0.0 0.0 0.0
Dataframe for Expected List for file : CT_W_14.csv is
100%Q mean(ms) P50(ms) P99(ms) p99.9(ms) #Samples
0 NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN
4 NaN 97.8025 17.8492 725.619 891.455 5304765.0
Dataframe for Actual List for file: CT_W_14.csv is
100%Q mean(ms) P50(ms) P99(ms) p99.9(ms) #Samples
0 NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN
4 NaN 97.8025 17.8492 725.619 891.455 5304765.0
Deviation between file CT_W_14.csv and CT_W_14.csv is :
100%Q mean(ms) P50(ms) P99(ms) p99.9(ms) #Samples
0 NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN
4 NaN 0.0 0.0 0.0 0.0 0.0
Цель: поскольку утверждения, которые у меня есть в данный момент, являются операторами печати, следовательно, я не смогу сделать их динамическими, если я захочу преобразовать это в HTML.Моя цель - вывести это как HTML-файл.Или даже если есть специальный способ добавить строку в качестве заголовка во фреймы данных, тогда это подойдет.И далее. Если отклонение превышает 10%, я хочу отобразить ячейку красным цветом.Было бы здорово, если бы кто-то сталкивался с таким сценарием, пожалуйста, помогите мне.Любая помощь будет оценена.