zoukankan      html  css  js  c++  java
  • Python 实现Excel自动化办公《下》

    欢迎关注【无量测试之道】公众号,回复【领取资源】,
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、

    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    上一讲我们讲到了Python 针对Excel 里面的特殊数据处理以及各种数据统计,本讲我们将引入Pandas 这个第三方库来实现数据的统计,只要一个方法就可以统计到上一讲的数据统计内容,本讲也会扩展讲讲Pandas所涉及到的相关使用方法。

    统计输出

     1 import pandas as pd
     2 pd1=pd.read_excel("test1.xls")
     3 pd2=pd.read_excel("test2.xls",skiprows=2) #skiprows=2表示忽略前几行,skip_footer用来省略尾部的行数
     4  
     5 #统计输出
     6 print(pd1.describe()) #数字类型的统计输出,它是DateFrame类型
     7 print(pd1.min()) #输出每一列里面最小值
     8 print(pd1.max())#输出每一列里面最大值
     9 print(pd1.sum()) #输出每一列的求和值
    10 print(pd1.mean()) #输出每一列的平均值
    11 print(pd1.median())#输出每一列的中位数

    通用输出或格式化输出

    1 #通用输出或格式化输出
    2 print(pd1.head()) #输出前五条数据,DateFrame类型的带有标签的数据
    3 print(pd1.tail()) #输出后五条数据,DateFrame类型的带有标签的数据
    4 print("获取到所有的值:
    {0}".format(pd1))#格式化输出所有数据
    5 print(pd1.values) #输出的是全部值的一个二维的ndarray
    6 print(pd1.dtypes) #输出每一列数据的数据类型,它是Series类型的数据
    7 print(pd1.columns) #输出序号的名字,它是Index类型的索引对象
    8 print(pd1.columns.values) #输出序号的名字,返回的是一个一维的ndarray
    9 print(pd1.shape) #输出

    指定输出

    1  
    2 #指定输出
    3 print(pd1.values[0]) #输出第一行的值
    4 print(pd1.values[0:2])#查看第一二行的值,返回的是一个二维的ndarray
    5 print(pd1[0:3]) #返回的是DateFrame类型的前三列数据,带有标签
    6 print(pd1[0:3].values) #返回的是ndarray类型的前三列数据的值,不带表头标签
    7 print(pd1.sample(2).values) #获取指定行数的值,它是一个二维的ndarray
    8 print(pd1['工号'].values) #查看某一列所有的值,返回的是一维的ndarray

    转置输出

    1 #转置输出
    2 print(pd1.T)#整个数据集的翻转展示
    3 print(pd1[0:3].T) #前三行数据翻转展示

    排序输出

    1 #排序输出
    2 print(pd1.sort_index(axis=1,ascending=False)) #axis等于1按列进行排序 如ABCDEFG 然后ascending倒叙进行显示
    3 print(pd1.sort_values(by="月工资"))#按值进行排序

    常规操作

     1 #常规操作
     2 pd1['job']=None #增加一列
     3 pd1.loc[1]=[1000,'林ok','','哈尔滨','1978-05-28 00:00:00','2003-06-20 00:00:00',333,0.5,555.0,"tester"]#增加一行
     4 pd1.drop([1],axis=0,inplace=True) #删除指定行 axis=0 表示行,inplace=True表示在原有的数据上改变
     5 pd1.drop('job',axis=1,inplace=True)#删除指定列 axis=1 表示列
     6 pd1.to_excel('test1.xls',sheet_name='new sheet',index=False,header=True)#保存新增的内容,index表示是否增加索引,header表示是否加列表表头
     7 pd1.index=(pd1.index+100) #设置索引的值
     8 pd1.rename(columns={'工号':'num','姓名':'name'},inplace=True) #修改表头信息
     9 pd1.set_index("num",drop=True,inplace=True) #设置索引的值,drop默认True,普通列被用作索引后,原列删除
    10 pd1.reset_index(drop=False,inplace=True)#还原索引为普通列,重新变为默认的整型索引,drop=False 原有的索引不变,添加一列,列名index;
    11 pd.set_option('display.max_rows', 3,'display.max_columns', 3,"display.max_colwidth",3,'display.width',3) #设置显示
    12 print(pd1.head())
    13 print(pd1.index) #输出索引信息
    14 print(len(pd1.index)) #输出索引的长度

    合并操作

    1 #合并操作
    2 pd3=pd.concat([pd1,pd2],axis=0) #将两个excel数据进行合并操作,注意保持数据格式上的一致
    3 print(pd3)

    缺失值处理

     1  
     2 #缺失值处理
     3 print(pd2)
     4 print(pd2['job'].isna())#检测是否是Nan
     5 print(pd2['job'].isnull())#检测是否是空值
     6 print(pd2['job'].notna())#检测是否是Nan
     7 print(pd2['job'].notnull())#检测是否是空值
     8 print(pd2.loc[pd2['job'].notnull(),:]) #过滤出来job不为null的行
     9 print(pd2.drop([1],axis=0,inplace=True)) #删除指定行 axis=0 表示行,inplace=True表示在原有的数据上改变
    10 print("*"*100)
    11  
    12  
    13 import numpy as np #这里是为了构建数据引入的,后面会有文章单独讲解
    14 df = pd.DataFrame([[np.nan, 2, np.nan, 0],
    15  [3, 4, np.nan, 1],
    16  [np.nan, np.nan, np.nan, np.nan],
    17  [np.nan, 3, np.nan, 4]],
    18  columns=list('ABCD'))
    19 print(df)
    20 print(df.fillna(100))#将为空的填充为100分
    21 print(df.fillna({"A":222},inplace=True))#将A列为nan的值设置为222
    22 print(df.dropna(axis="columns"))#删除有空值的列
    23 print(df.dropna(axis=1,how="all"))#删除掉全是空值的列
    24 print(df.dropna(axis=0,how="all"))#删除掉全是空值的行

    这一讲就分享到这里,内容也不少需要多实践去了解它的使用技巧,以上更多的是print语句进行输出来检查每一个是否符合预期。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

     添加关注,让我们一起共同成长!

  • 相关阅读:
    Ubuntu 修改 ssh 登录后的欢迎信息
    Hbase的配置和安装
    python起的 simpleHTTPServer服务传输文件
    hadoop修改MR的提交的代码程序的副本数
    Fair Scheduler 队列设置经验总结
    调度系统任务创建---创建一个JoinTrigger的依赖任务(五)
    调度系统任务创建---创建一个MultiJob的任务(四)
    调度系统任务创建---创建一个有上下游依赖的任务(三)
    调度系统任务创建---创建一个简单调度任务(二)
    SSM框架新特性关于用Java配置类完全代替XML
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/13572787.html
Copyright © 2011-2022 走看看