美文网首页Python
python处理excel--pandas

python处理excel--pandas

作者: 小啊小狼 | 来源:发表于2020-11-10 15:43 被阅读0次

    一、安装

    1:pandas依赖处理Excel的xlrd模块,安装命令是:pip install xlrd
    2:安装pandas模块还需要一定的编码环境,所以我们自己在安装的时候,确保你的电脑有这些环境:Net.4 、VC-Compiler以及winsdk_web
    3:步骤1和2 准备好了之后,安装pandas,安装命令是:pip install pandas

    二、pandas操作Excel表单

    数据准备:文件名test_pandas.xlsx


    image.png
    image.png

    1:引入模块

    import  pandas  as pd
    

    2:读取Excel文件的两种方式:

    方法一:默认读取第一个表单
    import pandas as pd
    
    df=pd.read_excel('test_pandas.xlsx')#这个会直接默认读取到这个Excel的第一个表单
    data=df.head()#默认读取前5行的数据
    pd.set_option('display.width',None)  #中间不用省略号展示
    print("获取到所有的值:\n{0}".format(data))#格式化输出
    

    输出:

    获取到所有的值:
       case_id title                                     url                             data
    0        1  正常登陆  https://www.lixinchuxing.com/url1.html  {"uname":"uname1","pwd":"pwd1"}
    1        2  查询车辆  https://www.lixinchuxing.com/url2.html  {"uname":"uname2","pwd":"pwd2"}
    2        3  获取详情  https://www.lixinchuxing.com/url3.html  {"uname":"uname3","pwd":"pwd3"}
    3        4  修改配置  https://www.lixinchuxing.com/url4.html  {"uname":"uname4","pwd":"pwd4"}
    
    方法二:通过指定表单名的方式来读取
    df=pd.read_excel('lemon.xlsx',sheet_name='student')#可以通过sheet_name来指定读取的表单
    #获取所有数据(不包含第一行)
    print("获取到所有的值:\n{0}".format(data))#格式化输出
    

    输出

    获取到所有的值:
    获取到所有的值:
    [[1 '张三' 88 88 88 88]
     [2 '李四' 77 77 77 77]
     [3 '王五' 66 66 66 66]
     [4 '赵六' 55 55 55 55]]
    

    三、pandas操作Excel的行列

    1:读取指定的单行,数据会存在列表里面

    df=pd.read_excel('test_pandas.xlsx')#这个会直接默认读取到这个Excel的第一个表单
    data=df.iloc[0].values#0表示第一行 这里读取数据并不包含表头
    print("读取指定行的数据:\n{0}".format(data))
    

    输出

    读取指定行的数据:
    [1 '正常登陆' 'https://www.lixinchuxing.com/url1.html'
     '{"uname":"uname1","pwd":"pwd1"}']
    

    2:读取指定的多行,数据会存在嵌套的列表里面:

    df=pd.read_excel('test_pandas.xlsx')
    data=df.iloc[[1,2]].values#读取指定多行的话,就要在ix[]里面嵌套列表指定行数
    print("读取指定行的数据:\n{0}".format(data))
    

    输出

    读取指定行的数据:
    [[2 '查询车辆' 'https://www.lixinchuxing.com/url2.html'
      '{"uname":"uname2","pwd":"pwd2"}']
     [3 '获取详情' 'https://www.lixinchuxing.com/url3.html'
      '{"uname":"uname3","pwd":"pwd3"}']]
    

    3:读取指定的行的指定列的数据:

    df=pd.read_excel('test_pandas.xlsx')
    data=df.iloc[0,1]#读取第一行第二列的值(不算表头),这里不需要嵌套列表
    print("读取指定行的数据:\n{0}".format(data))
    

    输出

    读取指定行的数据:
    正常登陆
    

    4:读取指定的多行多列值:

    4.1

    iloc 为按位置对列索引,使用的是 [[行号], [列号]]

    df=pd.read_excel('test_pandas.xlsx')
    data=df.iloc[[0,1],[2,3]]#读取第一行第二行(不算表头),第3、4的值
    print("读取指定行的数据:\n{0}".format(data))
    
    4.2

    loc为按列名索引,使用的是 [[行号], [列名]]

    df=pd.read_excel('test_pandas.xlsx')
    data=df.loc[[0,1],["title","url"]].values#读取第一行第二行(不算表头),第3、4的值
    print("读取指定行的数据:\n{0}".format(data))
    

    输出同样为:

    [['https://www.lixinchuxing.com/url1.html'
      '{"uname":"uname1","pwd":"pwd1"}']
     ['https://www.lixinchuxing.com/url2.html'
      '{"uname":"uname2","pwd":"pwd2"}']]
    

    5:获取所有行的指定列

    df=pd.read_excel('test_pandas.xlsx')
    data=df.iloc[:,[1,2]].values#所有行的第2、3列第三列的值
    print("读取指定行的数据:\n{0}".format(data))
    

    6:获取行号并打印输出

    df=pd.read_excel('test_pandas.xlsx')
    print("输出行号列表",df.index.values)
    
    # 输出结果是:
     输出行号列表 [0 1 2 3]
    

    7:获取列名并打印输出

    df=pd.read_excel('test_pandas.xlsx')
    print("输出列标题",df.columns.values)
    
    # 输出结果是:
    输出列标题 ['case_id' 'title' 'url' 'data']
    

    8:获取指定列的值:

    print("输出值\n",df['data'].values)
    
    # 输出结果是:
    输出值
     ['{"uname":"uname1","pwd":"pwd1"}' '{"uname":"uname2","pwd":"pwd2"}'
     '{"uname":"uname3","pwd":"pwd3"}' '{"uname":"uname4","pwd":"pwd4"}']
    

    9:获取文件中的表单

    reader = pd.ExcelFile('test_pandas.xlsx')
    sheet_names = reader.sheet_names
    print(sheet_names)
    
    #输出结果
    ['testcase', 'score']
    

    四:pandas处理Excel数据成为字典

    我们日常做接口自动化时,所需要的数据格式并非二维数组,而是表头作为key,每一行数据作为value的嵌套字典的列表,每一行的数据作为一个测试用例,用一个字典表达,多行组成一个列表。
    下面方法可以将excel中的数据转化为我们需要的数据格式。

    import pandas as pd
    
    df=pd.read_excel('test_pandas.xlsx')
    test_data=[]
    #获取表头
    keys = df.columns.values
    for i in df.index.values:#获取行号的索引,并对其进行遍历:
        # 根据i来获取每一行指定的数据 并利用to_dict转成字典,# loc为按列名索引 iloc 为按位置索引,使用的是 [[行号], [列名]]
        row_data=df.loc[i,keys].to_dict()
        # 将每一行转换成字典后添加到列表
        test_data.append(row_data)
    print("最终获取到的数据是:\n{0}".format(test_data))
    

    输出结果

    最终获取到的数据是:
    [{'case_id': 1, 'title': '正常登陆', 'url': 'https://www.lixinchuxing.com/url1.html', 'data': '{"uname":"uname1","pwd":"pwd1"}'},
     {'case_id': 2, 'title': '查询车辆', 'url': 'https://www.lixinchuxing.com/url2.html', 'data': '{"uname":"uname2","pwd":"pwd2"}'},
     {'case_id': 3, 'title': '获取详情', 'url': 'https://www.lixinchuxing.com/url3.html', 'data': '{"uname":"uname3","pwd":"pwd3"}'}, 
    {'case_id': 4, 'title': '修改配置', 'url': 'https://www.lixinchuxing.com/url4.html', 'data': '{"uname":"uname4","pwd":"pwd4"}'}]
    

    相关文章

      网友评论

        本文标题:python处理excel--pandas

        本文链接:https://www.haomeiwen.com/subject/kettbktx.html