1、将字典中的值写入到DataFrame中,并保存到excel中
import pandas as pd
data = {"add": [1, 2, 3], "update": [1, 2, 3]}
data_sub = pd.DataFrame(columns=['interface_name', 'response_time'], index=[])
i = 0
for key, value in data.items():
data_sub.loc[i] = [key, value]
i += 1
data_sub['max_time'] = data_sub['response_time'].apply(lambda x: max(x))
data_sub.sort_values(by="max_time", axis=0, ascending=False, inplace=True)
file_dir=""
data_sub.to_excel(file_dir,index=False)
2、将字典中的值写入到DataFrame中排序
import pandas as pd
data = {"add": [1, 2, 3], "update": [1, 2, 3]}
data_sub = pd.DataFrame(columns=['interface_name', 'response_time'], index=[])
i = 0
for key, value in data.items():
data_sub.loc[i] = [key, value]
i += 1
data_sub['max_time'] = data_sub['response_time'].apply(lambda x: max(x))
data_sub.sort_values(by="max_time", axis=0, ascending=False, inplace=True)
file_dir=""
data_sub.to_excel(file_dir,index=False)
3、对dataframe中的数据进行统计,使用groupby和apply
import pandas as pd
def get_test_result_rate(test_data):
data = pd.DataFrame(
columns=['case_title', 'method', 'path', 'data', 'file', 'res', 'assert_expression', 'result'])
for key, value in test_data.items():
data = data.append(value, ignore_index=True)
data['module_name'] = data['case_title'].apply(
lambda x: re.findall('(【.*】-.+?)-', x)[0] if len(re.findall('(】-.*?-)', x)) > 0 else re.findall('(【.*】', x)[0])
df_new = pd.DataFrame(columns=['module_name', 'total_count', 'pass_count', 'fail_count'])
for name, group in data.groupby(by='module_name'):
total_count = group['module_name'].count()
pass_count = group[group['result'].str.contains('pass')]['result'].count()
fail_count = group[group['result'].str.contains('fail')]['result'].count()
skip_count = group[group['result'].str.contains('skip')]['result'].count()
statistics_value = {'module_name': name, 'total_count': total_count, 'pass_count': pass_count,
'fail_count': fail_count, 'skip_count': skip_count}
df_new = df_new.append(statistics_value, ignore_index=False)
df_new['pass_rate'] = (df_new['pass_count'] + df_new['skip_count']) / df_new['total_count']
df_new['pass_rate'] = df_new['pass_rate'].apply(lambda x: '{:.2%}'.format(x))
df_new.sort_values(by=['total_count'],ascending=[False],inplace=True,ignore_index=True)
return df_new
4、对dataframe中的数据进行统计,使用groupby和apply
import pandas as pd
data=pd.DataFrame(columns=['A','B'])
data.groupby('B').filter(lambda x:len(x)>2)
data.groupby('B').filter(lambda x:len(x)>2,dropna=False)
5、读取某个目录下的所有yaml文件,以及文件夹里面的yaml文件
import os
def get_yaml_files(path: list):
path_list = []
project_root = os.path.dirname(os.path.dirname(__file__))
file_path = os.path.join(project_root, *path)
for root, dirs, files in os.walk(file_path):
for file in files:
if file.endswith('.yaml'):
path_list.append(os.path.join(root, file))
return path_list
if __name__ == '__main__':
case_dir = ['case']
case_files_list = get_yaml_files(case_dir)
print(case_files_list)