pandas中DataFrame使用

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):
    # columns=['case_title','method','path','data','file','res','assert_expression','result']
    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'])
# 提取分组中大于2个元素的数据
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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值