zoukankan      html  css  js  c++  java
  • pandas的简单使用

    pandas可以对数据进行整理分析
    因为要对excel中的源数据进行分组和处理,所以想到用pandas来处理。试用过确实比自己去读写快捷很多
    (实际pandas底层也是用xlrd,xlwt两个第三方包来读取Excel和写文件到Excel中)
     
    一、pandas处理的数据结构介绍
    1、series结构
    该结构类似一个数组
    pd.Series([1,2,3,4,5])
     
    2、DataFrame
    使用DataFrame创造的结果与字典类似,实际是一个key对应的值为series的结构
    从excel中直接读出来的数据就是DataFrame结构,以下面例子为例:【d.第一列】能读出第一列的所有值,即后面的数组的值
    d=pd.DataFrame({"第一列":[11,22,33,44,55],"第二列":['a','b','c','d','e'],"第三列":"haha"})
    d=pd.DataFrame([{"第一列":11,"第二列":'a'},{"第一列":22,"第二列":'b'}])
     
    二、基本语法
    import pandas as pd
     
    1、从文件中读取数据
    data_origin = pd.read_excel(f)#从excel中读取数据,也可以通过read_csv()等从其他格式文件中读取数据
     
    2、打印数据的长度,excel中有多少行
    len(data_origin)
     
    3、打印数据的索引
    print(data_format.index)#打印索引结果,列出索引范围RangeIndex(start=0, stop=194, step=1)
    4、将excel中的数据只取某几个列名下的数据重组
    data_format = data_origin[["标题", "解决方案"]]#获得excel第一行的内容为列名的数据,“标题”和“解决方案”为列名
     
    5、打印数据的某列结果的值
    print(data_origin.标题)#打印dataFrame中某个列的数据,这里打印的第一列为标题的列的数据,也可以用data_origin.A等表达
    print(data_format["标题"])
     
    6、打印dataFrame数据的列表标题、除标题外的值
    print(d.columns)#显示所有的列表索引,对应到excel的标题
    print(d.values)#显示除标题行外的值
     
    7、将列表数据倒置,横竖转换
    print(d.T)
     
    8、获得索引值为1到3的值,例子即为第2行到第3行的数据
    print(d[1:3])
     
    打印第一行的数据
    print(d.iloc[1].values) 
     
    9、过滤数据
    9.1组合过滤:第一列值大于22和第二列值等于c的
    print(d[(d.第一列 > 22) & (d.第二列 == 'c')])
     
    9.2使用query过滤
    print(data_format.query('(解决方案 not in  ["不是BUG","重复BUG","无法重现"] & 创建人 != ("林立星"))'))#这种方案也可行,但是不能直接写变量,比较麻烦
     
    9.3判断值是否在某个数组内用isin()
    print(data_format[(data_format.解决方案.isin(invalid_resove))])#判断数据是否在XX区间内
     
    9.4判断值是否不再某个数字内用~
    bug_effective = data_format[
        (data_format.状态.isin(["已关闭"]) & ~data_format.解决方案.isin(invalid_resove))]
     
    10、获得数据的前10行
    print(data_format.head(10))#获得dataFrame数据的前10行
     
    11、将结果输出到excel中
    使用to_excel()方法
    data_effective.to_excel("./解析BUG结果.xls",sheet_name="有效BUG")#这种每次都会覆盖前面保存的sheet的值
     
    直接用上面的方法,向同一个excel中输出时会将excel中原有的sheet覆盖了,可以用下面的方法解决这个问题
    with pd.ExcelWriter('./解析BUG结果.xls') as writer:
        data_effective.to_excel(writer, '有效BUG')
        data_unkown_reslover.to_excel(writer, '未知解决人的BUG')
     
    第二种方法:用这种方法主要是因为我的数据结果有的用的插入excel有的是保存的图标,结果不一样
    from openpyxl import load_workbook
    book= load_workbook('./存在的文件名.xlsx')
    writer = pd.ExcelWriter('./存在的文件名.xlsx', engine='openpyxl')
    writer.book = book
    bug_effective.to_excel(writer, ’sheet的标题')
    writer.save()
     
    12、过滤字段值不为NAN(空)的结果.notnull()
    info[info.重新打开次数.notnull()])
     
    13、将dataFrame存储到文件中时指定列的顺序,使用columns参数值来指定
    .to_excel(writer,sheet名,columns=["列名1”,"列名2",”列名3”])
     
    例子:pd.DataFrame(buganalysis_android).to_excel(writer, 'Android端个人BUG',columns=["开发姓名","BUG总数","编码错误","历史遗留","需求变更导致","以后解决","重新打开数量”])
     
    14、过滤数据,多个条件组合查询
    多个条件用()组合起来,使用&进行与,|进行或
    data[(data.修复人.notnull()) & (data.修复人.isin(RD["Android"]) | data.修复人.isin(RD["server"]))]
     
    15、打印DataFrame下的所有列名
    print(data.columns.values.tolist())

     

    16、操作数据库
    https://www.cnblogs.com/meitian/p/10502657.html
  • 相关阅读:
    八皇后之回溯算法
    手撕堆排序 优先级队列的实现方式
    扩展1000!(n!)的尾数零的个数
    #12. 整数转罗马数字 穷举法
    #11 盛最多水的容器
    Sql Server 复制数据库
    常见dos命令行
    JSP页面中,EL表达式获取根路径。
    maven springTest结合junit单元测试
    【Java异常】Exception in thread“main” java util ConcurrentModificationException的解决方案
  • 原文地址:https://www.cnblogs.com/meitian/p/10568042.html
Copyright © 2011-2022 走看看