安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

分手吧Excel我有Python了

8月4日 皇极城投稿
  前言
  越来越多开发者表示,自从用了PythonPandas,Excel都没有打开过了,用Python来处理与可视化表格就是四个字非常快速!
  下面我来举几个明显的例子1。删除重复行和空行
  我们直接用dict。fromkeys的方法把当前的数据转为字典,默认的值为None因为用不到,也就无所谓了。然后我们再用list直接对结果进行类型转换,转换为list。In〔135〕:forrowinrows4:print(row)(name,address)(tomli,beijing)(tomli,beijing)(,)(marywang,shandong)(marywang,shandong)(,)(de8ug,guangzhou)In〔148〕:dict。fromkeys(rows4)Out〔148〕:{(name,address):None,(tomli,beijing):None,(,):None,(marywang,shandong):None,(de8ug,guangzhou):None}In〔137〕:list(dict。fromkeys(rows4))Out〔137〕:〔(name,address),(tomli,beijing),(,),(marywang,shandong),(de8ug,guangzhou)〕
  这时候,重复数据直接去掉了,注意我们这里的dict是python3新版本的,所以顺序没有影响,如果你还在用python2或者python3。5以下,建议升级一下python版本。
  接下来,就是空数据的处理了。观察(,)是个元组,第一个位置的数据为空字符串,那么整体长度为1,可以直接通过循环来去掉。这里的循环我们可以用Python中的语法糖写法,直接一行搞定,最后加个判断只留下长度大于1,最后用list转换为列表。In〔179〕:list(xforxindict。fromkeys(rows4)iflen(x〔0〕)1)Out〔179〕:〔(name,address),(tomli,beijing),(marywang,shandong),(de8ug,guangzhou)〕
  上面的研究搞定了,直接把研究结果放到函数中解决重复行和空行的问题。
  注意这时候我们处理的行数据,所以就不再按列循环了。而且,当前的sheet中处理之后,每一行的内容都会修改位置或删除。所以我们先用oldrows〔xforxinsheet。values〕取到旧的每一行的数据,注意这里的sheet后直接用values取到数据,而不是cell对象。这里的oldrows是个列表,就可以用刚才的研究直接转为删除重复和空行的数据了。
  接下来,用sheet。deleterows(1,sheet。maxrow)
  删除所有行,第一个参数表示从第一行开始,第二个参数为最大行数。最后,用循环新的行数据的方式,把新数据写入当前的sheet。In〔189〕:defhandleduplicate(wb,sheetname):去除重复行,空行先取出每一行,清空sheet,处理后写回print(f开始处理工作表:{sheetname}。center(18,))sheetwb〔sheetname〕oldrows〔xforxinsheet。values〕print(修改前:,oldrows)newrowslist(xforxindict。fromkeys(oldrows)iflen(x〔0〕)1)print(修改后》》,newrows)删除所有行sheet。deleterows(1,sheet。maxrow)写入新数据forrowinnewrows:sheet。append(row)
  运行测试,查看结果。再说一次,一定记得测试啊!如果有错误就根据错误提示,查看代码,反复调试,去除bugs。In〔190〕:wbloaddata()handleduplicate(wb,重复行)saveas(wb)2。删除空格
  删除空格也需要用到字符串的函数,所以这里还是简单研究一下。如果我们想去除字符串中间的空格,可以用split默认进行分割,然后把分割的结果用’’。join方法连接起来就可以了。注意join前是空的字符串。这里也用不到strip去除两端的空格了,因为split分割后只有几个最后的字符串组成的列表。In〔192〕:aabcIn〔194〕:a。strip()Out〔194〕:abcIn〔195〕:a。split()Out〔195〕:〔a,b,c〕In〔196〕:。join(a。split())Out〔196〕:abcIn〔〕:
  研究成功后,写入函数。这次命名为handleblank。In〔197〕:defhandleblank(wb,sheetname):按列循环,通过参数确认目标print(f开始处理工作表:{sheetname}。center(18,))sheetwb〔sheetname〕forcolinsheet。itercols():不加参数,循环所有列forcellincol:print(修改前:,cell。value,end)cell。value。join(cell。value。split())print(修改后》》,cell。value)In〔198〕:handleblank(wb,空格)3。修改日期和时间格式
  有时候,我们需要对表格中时间相关的单元格进行格式修改,这里需要用到Python中时间模块datetime,将需要的格式进行拼接后,用strftime进行转换。
  假设这里我们想把之前简单的111月日格式,更改为年月日的样式,中间加上分隔符或,就需要用x或Ymd来进行操作了。注意这里的加字母都是官方定义好的格式而已,我们用到时候进行拼接,传给函数就可以了。
  具体更多的拼接格式如下:In〔199〕:importdatetimeIn〔209〕:ddatetime。datetime(2019,1,11)In〔203〕:d。strftime(x)Out〔203〕:011119In〔205〕:d。strftime(Ymd)Out〔205〕:20190111
  研究完成后,我们编写函数。
  首先需要用m,dcell。value。split()把之前简单的日期进行分割,得到m,代表月份和日期,然后用datetime进行转换,生成时间相关的对象day,注意里面的参数是数字,所以用int转换,最后把day进行格式化输出。编写函数后,一定记得测试。In〔218〕:defhandletime(wb,sheetname):按列循环,通过参数确认目标print(f开始处理工作表:{sheetname}。center(18,))sheetwb〔sheetname〕forcolinsheet。itercols(maxcol1,minrow2):找到时间的列,第一列,从第二行开始forcellincol:print(修改前:,cell。value,end)m,dcell。value。split()daydatetime。datetime(2019,int(m),int(d))cell。valueday。strftime(Ymd)print(修改后》》,cell。value)In〔220〕:wbloaddata()handletime(wb,时间)saveas(wb)4。修复数字和符号
  接下来,处理数字和符号相关的操作。加入我们之前的价格,很多是有小数点的,这时候还想保存两位小数,并加上人民币符号为前缀。就需要新的一波研究了。
  有小数点,一是要保证位数,我们这里要求2位,二是要对多余的位数四舍五入。可以有以下俩个方式完成,一个用Decimal一个用round,两个的区别是Decimal(0。00)指定位数后,会自动补0,而round遇到0就自动舍掉了。而且round在四舍五入的计算中,还有点特殊。具体可查看官方文档。
  我们这里用Decimal来完成函数内相关操作。记得测试啊!In〔227〕:fromdecimalimportDecimalIn〔240〕:a3。1bDecimal(a)。quantize(Decimal(0。00))print(b)3。10In〔244〕:round(a,2)位数自动省略0Out〔244〕:3。1In〔247〕:defhandlenum(wb,sheetname):按列循环,通过参数确认目标print(f开始处理工作表:{sheetname}。center(18,))sheetwb〔sheetname〕forcolinsheet。itercols(mincol3,maxcol3,minrow2):找到时间的列,第一列,从第二行开始forcellincol:print(修改前:,cell。value,end)cell。valueround(float(cell。value),3)cell。valuestr(Decimal(cell。value)。quantize(Decimal(0。00)))print(修改后》》,cell。value)In〔249〕:wbloaddata()handlenum(wb,数字符号)saveas(wb)最后
  文章对你有帮助的话,记得帮作者点点赞
  接下来还会持续跟新有关Python的文章,点点关注不迷路。
投诉 评论 转载

南卡NANKPOW3充电宝,无线磁吸黑科技手机作为我们生活中必不可少的东西,谈到它必不可少的配件就是充电宝,虽说很多场合都设置了共享充电宝,但仍然有很多覆盖不到的地区,加上考虑到经济问题,还是自己携带一个更加方便,但是……生鲜团购的下一站?在复杂的不确定性经济环境下,对于用户生活相关的衣食住行都产生了重要的影响,从持续的疫情反复下,不论是北上广深的一线城市,还是二三线的省会与中心重点城市,物质的保供,成了生产和生……澳大利亚研发纳米涂层延长锂电池使用寿命澳大利亚昆士兰大学的研究人员开发出一种新型纳米涂层,可以延长锂电池的使用寿命,降低废电池的环境危害。相关论文已发表于《自然通讯》。主导这一研究的昆士兰大学化学工程学院教授……分手吧Excel我有Python了前言越来越多开发者表示,自从用了PythonPandas,Excel都没有打开过了,用Python来处理与可视化表格就是四个字非常快速!下面我来举几个明显的例子1。……数字孪生助力数字经济发展陶飞北京航空航天大学科学技术研究院副院长、教授我们的衣食住行离不开物理世界,但处于网络和信息时代的我们,同样也离不开数字世界或虚拟世界。那么物理世界和数字世界是如何关联?……印度公布100亿美元计划以吸引半导体和显示器企业,鸿海Ved路透社12月15日报道,印度科技部长周三表示,联邦内阁已批准一项约100亿美元的激励计划,旨在吸引半导体制造商和显示器生产企业。印度正在加大努力,推动实现政府打造全球电子生产中……华为有什么黑科技?感谢您的阅读。华为有什么黑科技,先要说说黑科技是什么意思,黑科技泛指让人耳目一新的新技术、新硬件、新工艺、新材料等,也可以在一个东西原有的基础上进行改造创新,使得它会变得更好。……4维空间存在?德国数学家已证明,进入4维空间后人会变成什么?世界既是眼前的模样,也是人类的想象力塑造成的另一幅模样。所以,想象力丰富的人常常可以畅游在不同的空间当中,他们的梦境都比普通人要更加天马行空。爱因斯坦的相关理论为我们打开……我想买个手机,大家推荐一下大家好,我本人想买个手机,想请大家推荐几款手机,我先说我看的几款手机,价位在40008000元左右,说真的,这个价位有点小贵,但是我是准备做自媒体,拍照用的比较多,要求拍照性能……社区商业不止是买菜,不只是团购来源:周天财经文罗拓很多人可能都有感觉,社区团购是不是已经降温了?如果从GMV的角度看,以互联网公司为主体的新三团(美团、拼多多、橙心优选)仍旧在继续推进这项业务。……iPhone为什么这么贵系列之iOS篇墓碑机制众所周知,iPhone的后台被称为伪后台机制,今天就聊一聊iPhone的后台机制:墓碑机制。当iPhone切换应用后,当前的APP会独占运行内存空间,之前的应用将状态保存……美国银行目前的高估值合理维持特斯拉(TSLA。US)中性评级智通财经APP获悉,美国银行发布研报表示,维持对特斯拉(TSLA。US)的中性评级和1100美元目标价。美银分析师JohnMurphy表示,特斯拉第一季度交付了31004……
我的古老诺基亚如果用激光笔照射月球,月球上会出现激光笔的红点吗?2022年第九次油价调整即将开始抖音团购剑指美团,能力尚欠缺?苹果27英寸MiniLED显示屏OLED屏MacBook曝光5G通讯是骗局?看网友的精彩分析2021成都车展,这些重磅新车你有关注吗?消息称苹果已聘请Meta高管负责ARVR头显的营销和公关动铁耳机和动圈耳机哪种更好?玩了6年耳机,给您说说就要发布的7会成为索尼全画幅微单的新基准吗?影响几何?你怎么看苹果又重新占据了中国市场第一的位置?中秋大战,数码厂商中秋内卷,华米OV,谁才是最后赢家?小牧童和狼明天生肖兔的运势及运(七五年的兔每月运势)为什么你宝贝没有流量?学会这13个核心关键,快速获取免费流量中班体育活动玩弹枇杷核教案白蔻仁能治疗口臭吗?去口臭最简单的方法最后一道菜阅读题答案室内装修工程吊顶的质量控制城市规划行业如何快速了解商圈内用户画像,住宅分布交通等情况建议女性多吃这种食物,色素或消淡,皮肤变白净一天游去哪里好(现在自驾游去哪里好玩)不想冬眠的熊宝宝料理机怎么选?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利