精华内容
下载资源
问答
  • 下面小编就为大家带来一篇用python实现简单EXCEL数据统计的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Python进行Excel数据统计

    千次阅读 2020-04-29 21:04:47
    Python进行Excel数据统计 前言 示例数据 前期思路 实操 遇到的问题和解决方案 最终结果 实现代码 总结 前言 貌似大家中使用到Excel数据统计和处理比较多。前两天BF发来指示,帮忙统计2019年的全年(1-12月)、全体...

    前言

    貌似大家中使用到Excel数据统计和处理比较多。前两天GF发来指示,帮忙统计2019年的全年(1-12月)、全体员工(每月可能有新入职员工)的养老保险、医疗保险、失业保险、工伤和生育共五项中的公司缴纳部分。需要进行全年累加,最后放到区域公司发来的汇总表中。貌似不难,但也需要理一理思路。

    示例数据

    示例的原始数据如下所示(12张表格)。
    在这里插入图片描述==
    需填的表格如下
    在这里插入图片描述

    前期思路

    (1)python Excel的读写操作
    (2)全体员工的数据提取统计操作,此处适合使用字典类型(字典为可变数据类型)。字典的key为员工的名字,对应的value为一个含有5个元素的列表(后续需要累加更改)
    (3)python写Excel的时候,需要进行人员的判断匹配,因为最终的汇总表人员众多

    实操

    遇到的问题和解决方案

    (1)如何提取数据? 原始数据中,公司含有不通的部门,每个部门又有相应的汇总栏目,影响数据提取。通过观察,A列数据的序号,只在对应员工栏目有数值的序号标识,而汇总栏目为空值。因此可以通过判断A列是否是数值来提取员工信息。
    (2)存在None值。 对应的员工信息中,存在空值,例如吴三的医疗保险部分。为不影响后续的累加运算,需要进行数据的处理,把空值转换为数字0。
    (3)数据提取。 由于GF的示例数据表格中养老保险、医疗保险、失业保险、工伤和生育是使用公式计算的,字典的键值对的值(value)提取的结果为元素为 '=ROUND(D4*19%,2)'的字符串列表,无法进行数值的累加操作。
    (a)解决方案A。同样提取对应列的数据,从而计算出对应的保险的数据,由于计算结果为浮点数,最终的12个月累加结果存在小尾数问题,并且结果与手动结果不匹配,失败告终。
    (b)解决方案B。先对Excel表格进行处理,清除掉所有的公式,只保留数据。使用的方法为Excel的VBA编程,具体参考文献[1] [2].
    (4)列表对应项相加。 提取的结果每个sheet提取出一个字典。由于字典的值(value)为列表,操作时需要对value列表累加求和。python中列表的加法(+)为拼接操作,不像MATLAB中的矩阵操作。此时需要可以使用Numpy库进行数组操作,或者使用循环进行对应项相加。在此本文使用循环。

    最终结果

    (1)测试输出
    张一: [20900, 840, 8400, 65, 600]
    (2)写表格数据
    在这里插入图片描述

    实现代码

    #By WDL 2020-4-27
    import openpyxl
    
    #单元格数据判断函数,剔除空单元格中读取的空值
    def valuechange(sth): #判断是否为None
        if sth==None:
            sth=0
        return sth
    
    #Excel表格读取函数
    def excelread(wb,sheetname):#wb工作簿 sheetname表格名称
        ws=wb[sheetname] #打一个工作表
        # 读取数据,把excel中的一个sheet按行读取出来,存入一个二维的list
        total_list=[]
        for row in ws.rows:
            row_list=[]
            for cell in row:
                row_list.append(cell.value)
            total_list.append(row_list)
        # 返回读取的数据列表,每个元素为sheet中的一行
        return total_list
    
    #表格数据处理函数,数据提取
    def procSheet(wb,sheetname): #wb工作簿 sheetname表格名称
        total_list=excelread(wb,sheetname)
        #利用字典存数据
        infos={}
        for term in total_list:
            if isinstance(term[0],int): #判断标号是否是数值
                # 使用sheet中列的标号 判断元组中每个单元格的索引
                # term[2]对应姓名
                #term[4] 养老,term[8] 失业,term[12] 医疗,term[16] 工伤,term[17] #生育
                infos.setdefault(term[2], []).extend([valuechange(term[4]),valuechange(term[8]),\
                                                      valuechange(term[12]),valuechange(term[16]),valuechange(term[17])])
                #以上为 一键 对列表的字典,如果键term[2]不存在,添加键值对,只默认为空列表[] 随后使用extend()方法扩展列表
        return infos
    
    #----------------数据提取操作-------------
    wb=openpyxl.load_workbook("XXX公司应缴社会保险明细表(2019.1-12).xlsx")
    data=procSheet(wb,"2019.1") #初始值
    print(data)
    sheetnames=["2019.{}".format(str(i)) for i in range(2,13)]
    for sheetname in sheetnames:
        infos=procSheet(wb,sheetname)
        for name in infos:
            #列表对应项累加
            if name in data:
                for i in range(len(data[name])):
                    data[name][i]+=infos[name][i]
            else:
                data[name]=infos[name]
    print(data) #最终的统计数据
    print("张一:",data["张一"])
    worker=set(data)
    print(worker) #统计XXX公司的所有员工
    
    #------------Excel写操作--------------
    #打开要写数据的工作表
    workbook=openpyxl.load_workbook("XXX区域2019年度年薪人员人工成本统计表.xlsx")
    worksheet=workbook["附表二、2019年度人工成本汇总"]
    
    #对每个单元格进行格式设置 总共385行
    for eachCommonRow in worksheet.iter_rows(min_row=1,min_col=1,max_row=400,max_col=47):# 每一行为元组类型
        #使用sheet中列的标号 判断元组中每个单元格的索引
        if eachCommonRow[8].value in data:#姓名是否在字典中 第I列对应索引9-1=8
            eachCommonRow[37].value = data[eachCommonRow[8].value][0] #养老保险
            eachCommonRow[38].value = data[eachCommonRow[8].value][2] #医疗保险
            eachCommonRow[39].value = data[eachCommonRow[8].value][1]  # 失业保险
            eachCommonRow[40].value = data[eachCommonRow[8].value][3]  # 工伤保险
            eachCommonRow[41].value = data[eachCommonRow[8].value][4]  # 生育保险
    #保存
    workbook.save("XXX区域2019年度年薪人员人工成本统计表.xlsx")
    
    

    总结

    在实践中不断的修改完善,善用搜索能力,不断总结提高,减小工作量。最后希望对大家有帮助。

    参考文献
    [1]两种excel 去掉公式保留数值的方法. http://www.ittribalwo.com/article/1369.html
    [2]excel表格问题 怎么清除公式保留数据?https://www.zhihu.com/question/21638771

    展开全文
  • 原博文2016-11-24 23:06 −... 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlrd workbook = xlrd.open_workbook('demo.xlsx') #打开excel数据表 SheetList = wo...相关推荐2019-12-08 20:02 −利用Pyt...

    原博文

    2016-11-24 23:06 −

    任务: 用python时间简单的统计任务-统计男性和女性分别有多少人。 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlrd workbook = xlrd.open_workbook('demo.xlsx') #打开excel数据表 SheetList = wo...

    相关推荐

    2019-12-08 20:02 −

    利用Python读取和修改Excel文件(包括xls文件和xlsx文件)——基于xlrd、xlwt和openpyxl模块

    from openpyxl.style import Side,Border

    border = Border(left=Side(style='me...

    comment.png

    0

    attention.png

    1027

    2019-12-25 13:55 −

    1 import pandas as pd

    2 3 def test():

    4 my_data = {

    5 "ID":[1,2,3],

    6 "Name":["tom","egon","alex"]

    7 }

    8 data_frame = pd.DataF...

    2019-12-20 22:53 −

    1.安装

    cmd下输入pip install xlsxwriter

    2....

    comment.png

    0

    attention.png

    316

    2019-12-04 22:18 −

    1.openpyxl

    注意事项:对应的row和column的值必须大于等于1,其中1表示第一行或者第一列,文件格式是xlsx。

    import openpyxl

    def operation_excel(): # fine_tune_no() # 新建excel,改变sheet名字,并写入内容...

    2019-12-21 17:22 −

    1.新增表并添加数据;

    2.给工作表添加表名称,给表数据添加格式;

    import xlsxwriterdatas=(['Rent',1000], ['Gas',100], ['fish','画画'], ['rice',500])a=xlsxwriter.Workbo...

    comment.png

    0

    attention.png

    413

    2019-12-17 14:36 −

    一、安装xlrd模块

    二、常用方法

    1、导入模块

    import xlrd

    2、打开文件

    x1 = xlrd.open_workbook("testCase.xlsx")

    3、获取sheet

    print('sheet_names:', x1.sheet_names()) # 获取所有she...

    2019-12-17 15:05 −

    一、安装XlsxWriter模块pip install XlsxWriter二、常用方法

    import xlsxwriter

    import datetime

    workbook = xlsxwriter.Workbook("new_excel.xlsx") #创建Excel

    worksheet =...

    2019-12-10 15:37 −

    一、读取 Excel 表格数据

    1、导入open_workbook

    from xlrd import open_workbook

    2、打开Excel,得到xlrd.Book对象

    book = open_workbook('simple.xlsx')

    3、xlrd.Book对象

    print(...

    2019-12-04 14:32 −

    import xlrd

    # 打开文件

    data = xlrd.open_workbook('测试表.xlsx')

    # 查看工作表

    data.sheet_names()

    print("sheets:" + str(data.s...

    comment.png

    0

    attention.png

    215

    2019-12-02 15:45 −

    1、安装第三方库:openpyxl

    2、操作示例

    from openpyxl import load_workbook #1、打开文件

    file = load_workbook("test.xlsx") #Open the given filename and return the workboo...

    comment.png

    0

    attention.png

    248

    展开全文
  • 主要介绍了Python读取Excel数据并生成图表过程解析,文中通过示例代码介绍的非常详细,大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了Python实现对excel文件列表值进行统计的方法,涉及Python基于win32com组件操作表格文件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • #-*- coding:utf-8 -*-importxlrdfrom datetime importtimedeltadefread_excel(file_excel):#读excel并将需要的数据分类放在数组里infos=[]info_file=xlrd.open_workbook(file_excel)info_sheet=info_file.sheets()...

    #-*- coding:utf-8 -*-

    importxlrdfrom datetime importtimedeltadefread_excel(file_excel):#读excel并将需要的数据分类放在数组里

    infos=[]

    info_file=xlrd.open_workbook(file_excel)

    info_sheet=info_file.sheets()[0]

    row_count=info_sheet.nrowsfor row in range(1,row_count):

    time_string=info_sheet.cell(row,3).value

    time_s_sp=time_string.split(':')

    infos.append(

    {'type':info_sheet.cell(row,2).value,'other_cellphone':info_sheet.cell(row,0).value,'timespan':timedelta(seconds=int(time_s_sp[2]),minutes=int(time_s_sp[1]),hours=int(time_s_sp[0])),'gpscity':info_sheet.cell(row,5).value

    }

    )returninfosdefcount_cell(list_dirs,infotype):#统计总通话及分类统计结果,存在字典里

    result_dir={}

    time_all=timedelta(seconds=0)for list_dir inlist_dirs:

    time_all+=list_dir['timespan']

    info_type=list_dir[infotype]if info_type not inresult_dir:

    result_dir[info_type]=list_dir['timespan']else:

    result_dir[info_type]+=list_dir['timespan']returntime_all,result_dirdefprint_result(result_dir):#打印数据for k,v inresult_dir.items():print k.encode('utf-8'),vif __name__=="__main__":

    list_dirs=read_excel('src.xls')

    time_all,result_type=count_cell(list_dirs,'type')

    result_cell=count_cell(list_dirs,'other_cellphone')

    result_gpscity= count_cell(list_dirs, 'gpscity')print '总通话时间:%s' %time_allprint '按照通话类型分类:'print_result(result_type)print '按照号码分类:'print_result(result_cell[1])print '按照归属地分类:'print_result(result_gpscity[1])

    展开全文
  • movement=[] for j in range(len(movement)): ln_movement.append(math.log(movement[j]))###计算数值 mt=DataFrame(ln_movement,index=range(1,631),columns=["movement"]) 建立 mt.describe()###描述统计 运行...

    from pandas.core.frame import DataFrame

    import os

    import math

    os.chdir(" C:\A")

    from openpyxl import load_workbook

    airport_df = load_workbook("all_activity.xlsx")

    sheets = airport_df.sheetnames

    sheet_first = sheets[0]

    ws2 = airport_df["Sheet2"]#读取excel中第二张表

    movement=[]

    name_mov=[]

    for i in range(1,ws2.max_column+1):

    for j in range(2,ws2.max_row+1):

    cellr=ws2.cell(j,i)

    movement.append(cellr.value)

    ln_movement=[]

    for j in range(len(movement)):

    ln_movement.append(math.log(movement[j]))###计算对数值

    mt=DataFrame(ln_movement,index=range(1,631),columns=["movement"]) 建立

    mt.describe()###描述统计

    运行结果如下:

    movement

    count  630.000000

    mean    11.261194

    std      1.233674

    min      4.346268

    25%     10.644837

    50%     11.202507

    75%     11.893310

    max     17.191881

    展开全文
  • python编写的excel数据汇总小程序 一、软件功能 将多个excel表sheet1的数据汇总至一个新的excel表中。 二、设计思想 遍历“源数据表”目录下的所有excel表,读取数据,写入到一个新生成的excel中。 三、使用方法 1、...
  • 利用Python对Excel数据进行处理

    千次阅读 2021-07-07 21:29:58
    1. 加载文件夹内所有的Excel数据; 2. 生产贡献度分析图表(以柱状图显示表格数据); 3.提起Excel表格中指定列数据; 4. 定向筛选所需数据; 5. 多表数据统计排行; 6.多表数据合并在文件夹内生成合并后的新...
  • 有的时候我们把数据整理收集整理到excel中,那么要把excel中的某列文本数据制作词云图怎么做呢? 从最简单的说起。 最简单的词云图就是这种,英文的,不读取文件,不指定背景形状图片,不指定字体。 #复制文本用字符...
  • 最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而利用pandas就...
  • 好久没写了,今天来说说python读取excel的常见方法。首先需要用到xlrd模块,pip install xlrd 安装模块。 首先打开excel文件: xl = xlrd.open_workbook(r’D:\file\data.xlsx’) 传文件路径 通过索引获取要操作的...
  • 最近刚开始学python,正好实习工作中遇到对excel中的数据进行处理的问题,就想到利用python来解决,也恰好练手。 实际的问题是要从excel表中提取日期、邮件地址和时间,然后统计在一定时间段内某个人在某个项目上用了...
  • 主要给大家介绍了关于Python读取Excel一列并计算所有对象出现次数的相关资料,文中通过示例代码介绍的非常详细,大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了Python实现读写sqlite3数据库并将统计数据写入Excel的方法,涉及Python针对sqlite3数据库的读取及Excel文件相关操作技巧,需要的朋友可以参考下
  • 他们可能并不是想要学习 Python 去爬取一些网站从而获得酷酷的成就感,而是工作中遇到好多数据分析处理的问题,用 Python 就可以简单高效地解决。本文就通过一个实际的例子来给大家展示一下 Python 是如何应用于实际...
  • 利用Python取出excel数据并生成统计

    千次阅读 2019-09-14 22:07:30
    取出excel数据生成图表 ...Python中用来读取excel数据的模块 安装pip install xlrd xlrd文档 pyecharts Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。 ...
  • 提示:通常我们对excel表格进行删除多个项的时候,如果一条一条的删除就会花费很多时间,并且也不知道要删除的部分是否删除完,进行查询,分类的时候用python语言几条语句就能简单的完成要求。 例如:从一个有很多条...
  • Python-Office: Python统计Excel里面的数据

    千次阅读 2019-02-22 13:39:46
    类似下面的excel表格,第一列为关键字,第二列为关键字出现的次数。统计每个关键字的总数目。 譬如ab 是12+1, cd是13+2, ef是0。 XlsxWriter的安装 pip install XlsxWriter之后,python仍然可能提示找不到...
  • pythonexcel数据分组处理

    千次阅读 2020-12-12 13:08:08
    采用pandas包首先进行分组,然后获取具体明细再进行分词处理(分词处理这里就不展开了),只介绍下pythonexcel分组,然后具体明细进行处理。2.1 完整代码import pandas as pdif __name__ == '__main__':inputfile ...
  • 用从一些Excel表中复制一些数据,填入统计表中。复制粘贴的体验确实太过机械,不如用Python实现吧
  • 下面是我Python实现的源码,可以自动遍历某一文件目录下的所有文本文件,并将总的数据导出到Excel文件中,导出为Excel格式这样就比较方便统计了。 //实现将目录下所有文件格式为.txt的文件进行遍历统计,如果是别的...
  • 主要介绍了python实现查找excel里某一列重复数据并且剔除后打印的方法,涉及Python使用xlrd模块操作Excel的相关技巧,需要的朋友可以参考下
  • Excel数据分析中最常用的工具,本篇文章通过pythonexcel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作。在Python中pandas库用于数据处理 ,我们从1787页的pandas官网文档中总结出...
  • Python处理Excel数据

    2020-12-18 19:33:14
    基本的功能很简单,就是excel里面的一些数据进行过滤,统计多个表的内容进行合并等。之前没有处理excel数据的经验,甚至于自己都很少用到excel。记得《python核心》的最后一章里有讲到用win32 com操作office,...
  • Python/对excel进行数据分析 (mark)

    万次阅读 多人点赞 2018-12-05 16:12:01
    Python对excel进行分析   目前有一个excel表,其中里面有一个工作薄的名称为:btc,在这个工作薄中有2013年–2018年的所有交易数据,本文主要实现,将不同的年份的数据保存至新的工作薄并起名...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,785
精华内容 11,114
关键字:

python对excel数据统计

python 订阅