使用python实现excel常用功能
日常办公excel是一大利器,但是如果数据量太大,基本就卡到爷爷奶奶都不认识了,谁也受不了表格天天崩。这时候python必须拥有姓名。
用python来实现excel功能,主要靠两个包:pandas和numpy,用pip安装完之后,来实现下以下常用供能:
字符串查找和处理
分列
列中是否包含某项内容
模糊查询
大小写转换表的处理
排序
数据筛选
vlookup
删除重复项
数据透视表数值计算
计算,加总,平均,最大最小值
条件计算
1.准备:数据导入,整理
将用两个表来做示例,一个是”物资采购情况“表,另一个
是”物资采购订单金额“。
首先是加载包,用xlwings把示例数据导入到python中
import pandas as pd
import numpy as np
import xlwings as xw #导入excel数据app = xw.App(visible=False, add_book=False)
#获取”物资采购情况“
wb = app.books.open('本地地址*******.xlsx')
sht=wb.sheets['示例数据']
df=pd.DataFrame(sht.used_range.value)
#获取采购金额表
wb = app.books.open('本地地址*******.xlsx')
sht=wb.sheets['示例数据']
amount=pd.DataFrame(sht.used_range.value)
df(物资采购情况表)数据导入部分数据如下,列名和数据类型需要做下整理
#整理
df.columns=df.loc[0,:].values#第一行内容调整成列名
df=df.drop(index=0,axis=1)#删除原第0行
df.index=range(df.shape[0])#重排index
df['订单号']=df['订单号'].astype('int')#调整订单号的类型
整理后的结果,变成了比较典型的dataframe样子
同样处理amout表(订单金额)
#和表一同样方式的整理
amount.columns=amount.loc[0,:].values
amount=amount.drop(index=0,axis=1)
amount.index=range(amount.shape[0])
amount['订单号']=amount['订单号'].astype('int')
部分数据效果如下
2.字符串查找和处理
- 分列
举例:将供应商的城市提取出来,并将供应商字段名称更新为不包含城市名
df['供应商'].apply(lambda x:x.split('-'))
apply,将括号内方法应用于某列;
lambda,对该列中的每个元素执行操作;
元素x在此的类型属于str,就可以用str类下的split方法,来实现分割,分割依据”-“,效果如下:
df['城市']=df['供应商'].apply(lambda x:x.split('-')[1])
df['供应商']=df['供应商'].apply(lambda x:x.split('-')[0])
将分列后的内容应用到df中
- 列中是否包含某项内容
举例:“物资类别”中是否有“交流断路器”
df['物资类别'].isin(['交流断路器'])
结果返回布尔值
如果连用sum函数,可以得到一个该项目的统计个数
df[‘物资类别’].isin([‘交流断路器’]).sum()
- 模糊查询
举例 “物资类别”中是否有包含“断路器”字符的内容
df['物资类别'].str.contains('断路器')
结果返回布尔值,连用sum函数,可以得到一个该项目的统计个数
df[‘物资类别’].str.contains(‘断路器’).sum()
- 大小写转换
表格处理中常涉及到一些大小写的问题,新加一列”city“举例
df.loc[df[df['城市']=='北京'].index,'city']='beijing'
df.loc[df[df['城市']=='上海'].index,'city']='SHANGHAI'
df.loc[df[df['城市']=='杭州'].index,'city']='hANGZHOU'
增加”city”列内容如图
举例:针对列”city“,要转换成首字母大写形式
df['city']=df['city'].str.capitalize()
如果所有内容统一成小写,用str.lower(),全大写str.upper()
df['city'].str.lower()
df['city'].str.upper()
3.表的处理
- 排序
举例:对表amount按”应付金额“按照从大到小,降序排序
amount.sort_values('应付金额',ascending=False)#ascending 默认true升序排列,降序时需要复制false
- 数据筛选
举例:#筛选出应付金额大于300的订单
amount[amount['应付金额']>=300]
如果想获取订单号的值,就用values属性
amount[amount['应付金额']>=300]['订单号'].values
- vlookup:excel中最常用的相对高级点儿的使用就是vlookup函数,在用pandas的merge功能可以实现
举例:将amount中的应付金额,匹配到表df中
df_amount=df.merge(amount,on='订单号')#pandas的merge功能默认连接方式为inner连接,on后面是连接的依据字段,也就是vlookup中的第一个参数
- 删除重复项
目前表里面没有完全重复项,为了举例先把表加一个重复行
查找重复行
df.loc[20,:]=df.loc[0,:]#添加一行重复内容
df[df.duplicated()]#查看是否有整行内容重复,返回布尔值,df匹配布尔值后,返回重复内容
df.duplicated(subset='订单号')#查看某列是否有元素重复,返回布尔值,subset传入列名
删除重复行
df.drop_duplicates(inplace=True)#删除重复的行,inplace默认false,设定为true后,将在原有df上直接做调整
- 数据透视表
举例:统计每个供应商分别签署的订单数量、订单总金额,最后显示合计数
数据透视表,pandas里有两种方式可以实现,1.groupby,2.pivot_table(),这部分内容很多,之后单独整理下,先简单用pivot做个示例,
用前面合并好的df_amount,先转换下数据类型
df_amount['应付金额']=df_amount['应付金额'].astype('float')
df_amount['订单号']=df_amount['订单号'].astype('int')
用pivot_table()进行透视
total=df_amount.pivot_table(index=['供应商'],values=['订单号','应付金额'],aggfunc={'订单号':len,'应付金额':np.sum},margins=True)
#aggfunc指得是计算方法,比如sum,mean,len等,里面可以传入一个具体的str,list,或者字典,如果是字典的话,就用{value1:计算1,value2:计算2}这样的方式传入,非常好用
#换个列名
total.columns=['应付总金额', '订单个数']
4.数值计算
- 计算,平均,最大最小值
应付总金额
df_amount['应付金额'].sum()
每单均价
df_amount['应付金额'].mean()
分别找出金额最小、最大的订单
min_order=df_amount['应付金额'].min()#先找出最小订单金额
bool_index=df_amount['应付金额']==min_order#返回应付金额等于最小值的布尔值
df_amount[bool_index]#将布尔值匹配给df_amount,找到金额最小订单
找到金额最大的订单,以上几步写在一条语句中
df_amount[df_amount['应付金额']==df_amount['应付金额'].max()]
- 条件计算
举例:实际在5月份前能交货的”交流变压器“的有多少(总金额)
df_amount['实际交货日期']=pd.to_datetime(df_amount['实际交货日期'])#实际交货日期的type目前还是object,转换成日期格式
a=df_amount['实际交货日期']<pd.datetime(2014,6,1)#条件1:实际交货日期在6月前
b=df_amount['物资类别']=='交流变压器'#条件2:交流变压器
df_amount[a&b]['应付金额'].sum()#条件求和
暂时想到这么多内容,之后想到的话继续补充~
使用python实现excel常用功能相关推荐
- Python的前奏:excel常用功能简介,数据透视表,切片器
大家好,我是天空之城,今天给大家带来excel常用功能简介,数据透视表,切片器.excel是数据分析的神器,掌握了excel就等于数据分析入了门.就跟ppt一样,入门易,精通难,我们就是要向难而行,变 ...
- python如何实现选项功能_python几种常用功能如何实现 python几种常用功能实现代码实例...
本篇文章小编给大家分享一下python几种常用功能实现代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.python 程序退出的几种方式 import sys s ...
- Excel常用功能和常用函数学习笔记
Excel学习笔记 --基于Excel for Mac 2016 第一章 Excel常用功能 第1节 认识excel 快速插入N行:选择N行(或列)-右键-插入,即可插入N行(或列) 移动列:选择列- ...
- Python操作excel常用模块汇总
#收集的python相关信息#可能是全网最完整的 Python 操作 Excel库总结! #https://zhuanlan.zhihu.com/p/353669230#:~:text=%E5%8F% ...
- python实现excel筛选功能并输出_Python商务办公系列——pandas实现Excel筛选和编辑...
写在前面 各位大大,晚上好,我想死你们了!相信看这两期文章的朋友可能会注意到,这两期文章的开头都附带了小编自己的个人博客网址,没错,正是在这几周,小编终于完成了对于自己博客的搭建工作,以后小编会在微信 ...
- arcgis python脚本筛选与线共边的面_ArcGIS公共函数Python脚本,Arcgis,常用,功能
Arcgis常用功能 Python脚本 对一些常用功能的python脚本进行总结,方便以后直接调用. 1. 根据属性值删除行 arcpy.MakeFeatureLayer_management(out ...
- python与excel常用的第三方库_Python读写Excel文件第三方库汇总
常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...
- python pandas csv时间聚合_Python通过pandas操作excel常用功能
1.导入数据源 #导入相关库 import pandas as pd import numpy as np import os from pandas import DataFrame,Series ...
- python实现excel筛选功能
我想问问就是excel里面有筛选的功能,但是只能一次选择一个筛选的内容,我现在的工作就是筛选完一列之后,又要按其他的规则筛选,然后把筛选过的内容复制到新的excel里面,如果想用python解决,怎么 ...
- python系统-Python OS模块常用功能 中文图文详解
一.Python OS模块介绍 OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作. 可以查看OS模块的帮助文档: >>> i ...
最新文章
- 第九届蓝桥杯大赛软件赛省赛 C/C++ 大学B组
- 数据结构碎碎念(一)
- ios测试宏指令出错:“Expected identefier”
- 织入业务代码-LogAspect
- Sentence-LDA的介绍及程序
- 张一鸣向盖茨基金会捐赠1000万美元 此前国内捐款1亿元用于抗疫
- linux 修改文件日期,Linux中使用touch命令来修改文件的时间
- 找不到或是无法加载主类 不是原创
- 电脑同时打开多个软件如何设置
- STM32F0xx系列 基于LL库的Flash模拟EEPROM
- 计网考点——扩展的以太网
- SAP save_text 解决导入物料主数据长文本丢失空格
- lightroom最新版本下载_lightroom官网下载
- 物联网技术融合成为新趋势,LPWAN2.0泛在物联·ZETA生态大会在深圳召开
- docker学习(容器虚拟化技术---华子需要)
- SAP ALV异常:MOVE_TO_LIT_NOTALLOWED_NODATA
- 图形处理之 OpenGL
- 基于Spark的银行直销电话数据探索性数据分析
- 烤仔说 | Metahuman次世代“捏脸”怎么玩?
- 数据治理平台建设过程及部分术语解释
热门文章
- 2021考研数学二汤家凤接力题典1800【解答册】
- centeros 下载及安装
- Altium Designer 详细入门教程-原理图绘画-AD2016
- Oracle数据库的优化--索引
- java 预览word文档_Java版office文档在线预览
- Py之pyaudio:Python库之pyaudio简介、安装、使用方法之详细攻略
- FIT2CLOUD飞致云发布DataEase开源数据可视化分析平台
- 从达尔文到DevOps:John Willis和Gene Kim谈后凤凰项目时代
- 回弹强度记录表填写_混凝土抗压强度回弹法测试原始记录表.doc-_装配图网
- 【PDN仿真笔记4-电容布局仿真及结果分析】