范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

分手吧Excel我有Python了

  前言
  越来越多开发者表示,自从用了Python/Pandas,Excel都没有打开过了,用Python来处理与可视化表格就是四个字——非常快速!
  下面我来举几个明显的例子  1.删除重复行和空行
  我们直接用dict.fromkeys的方法把当前的数据转为字典,默认的值为None因为用不到,也就无所谓了。然后我们再用list直接对结果进行类型转换,转换为list。  In [135]: for row in rows4:     print(row) ("name", "address") ("tom li", "beijing") ("tom li", "beijing") ("",) ("mary wang", "shandong") ("mary wang", "shandong") ("",) ("de8ug", "guangzhou") In [148]: dict.fromkeys(rows4) Out[148]: {("name", "address"): None,  ("tom li", "beijing"): None,  ("",): None,  ("mary wang", "shandong"): None,  ("de8ug", "guangzhou"): None} In [137]: list(dict.fromkeys(rows4)) Out[137]: [("name", "address"),  ("tom li", "beijing"),  ("",),  ("mary wang", "shandong"),  ("de8ug", "guangzhou")]
  这时候,重复数据直接去掉了,注意我们这里的dict是python3新版本的,所以顺序没有影响,如果你还在用python2或者python3.5以下,建议升级一下python版本。
  接下来,就是空数据的处理了。观察("",)是个元组,第一个位置的数据为空字符串,那么整体长度为1,可以直接通过循环来去掉。这里的循环我们可以用Python中的语法糖写法,直接一行搞定,最后加个判断只留下长度大于1,最后用list转换为列表。  In [179]: list(x for x in dict.fromkeys(rows4) if len(x[0])>1) Out[179]: [("name", "address"),  ("tom li", "beijing"),  ("mary wang", "shandong"),  ("de8ug", "guangzhou")]
  上面的研究搞定了,直接把研究结果放到函数中解决重复行和空行的问题。
  注意这时候我们处理的行数据,所以就不再按列循环了。而且,当前的sheet中处理之后,每一行的内容都会修改位置或删除。所以我们先用old_rows = [x for x in sheet.values]取到旧的每一行的数据,注意这里的sheet后直接用values取到数据,而不是cell对象。这里的old_rows是个列表,就可以用刚才的研究直接转为删除重复和空行的数据了。
  接下来,用sheet.delete_rows(1, sheet.max_row)
  删除所有行,第一个参数表示从第一行开始,第二个参数为最大行数。最后,用循环新的行数据的方式,把新数据写入当前的sheet。  In [189]: def handle_duplicate(wb, sheetname):     """     去除重复行,空行     先取出每一行,清空sheet,处理后写回     """     print(f"开始处理工作表:{sheetname}".center(18, "-"))     sheet = wb[sheetname]     old_rows = [x for x in sheet.values]     print("修改前:", old_rows)     new_rows = list(x for x in dict.fromkeys(old_rows) if len(x[0])>1)     print("修改后-》》", new_rows)      # 删除所有行     sheet.delete_rows(1, sheet.max_row)     # 写入新数据     for row in new_rows:         sheet.append(row)
  运行测试,查看结果。再说一次,一定记得测试啊!如果有错误就根据错误提示,查看代码,反复调试,去除bugs。  In [190]: wb = load_data() handle_duplicate(wb, "重复行") save_as(wb)2.删除空格
  删除空格也需要用到字符串的函数,所以这里还是简单研究一下。如果我们想去除字符串中间的空格,可以用split默认进行分割,然后把分割的结果用’’.join方法连接起来就可以了。注意join前是空的字符串。这里也用不到strip去除两端的空格了,因为split分割后只有几个最后的字符串组成的列表。  In [192]: a="a b c   " In [194]: a.strip() Out[194]: "a b c" In [195]: a.split() Out[195]: ["a", "b", "c"] In [196]: "".join(a.split()) Out[196]: "abc" In [ ]:
  研究成功后,写入函数。这次命名为handle_blank。  In [197]: def handle_blank(wb, sheetname):     """     按列循环, 通过参数确认目标     """     print(f"开始处理工作表:{sheetname}".center(18, "-"))     sheet = wb[sheetname]     for col in sheet.iter_cols():  # 不加参数,循环所有列         for cell in col:             print("修改前:", cell.value, end="")             cell.value = "".join(cell.value.split())             print("修改后-》》",cell.value) In [198]: handle_blank(wb, "空格")3.修改日期和时间格式
  有时候,我们需要对表格中时间相关的单元格进行格式修改,这里需要用到Python中时间模块datetime,将需要的格式进行拼接后,用strftime进行转换。
  假设这里我们想把之前简单的1/11月日格式,更改为年月日的样式,中间加上分隔符/或-,就需要用"%x"或"%Y-%m-%d"来进行操作了。注意这里的%加字母都是官方定义好的格式而已,我们用到时候进行拼接,传给函数就可以了。
  具体更多的拼接格式如下:  In [199]: import datetime In [209]: d=datetime.datetime(2019,1,11) In [203]: d.strftime("%x") Out[203]: "01/11/19" In [205]: d.strftime("%Y-%m-%d") Out[205]: "2019-01-11"
  研究完成后,我们编写函数。
  首先需要用m, d = cell.value.split("/")把之前简单的日期进行分割,得到m,代表月份和日期,然后用datetime进行转换,生成时间相关的对象day,注意里面的参数是数字,所以用int转换,最后把day进行格式化输出。编写函数后,一定记得测试。  In [218]: def handle_time(wb, sheetname):     """     按列循环, 通过参数确认目标     """     print(f"开始处理工作表:{sheetname}".center(18, "-"))     sheet = wb[sheetname]     for col in sheet.iter_cols(max_col=1, min_row=2):  # 找到时间的列, 第一列,从第二行开始         for cell in col:             print("修改前:", cell.value, end="")             m, d = cell.value.split("/")             day = datetime.datetime(2019, int(m), int(d))             cell.value = day.strftime("%Y-%m-%d")             print("修改后-》》",cell.value)  In [220]: wb = load_data() handle_time(wb, "时间") save_as(wb)4.修复数字和符号
  接下来,处理数字和符号相关的操作。加入我们之前的价格,很多是有小数点的,这时候还想保存两位小数,并加上人民币符号为前缀。就需要新的一波研究了。
  有小数点,一是要保证位数,我们这里要求2位,二是要对多余的位数四舍五入。可以有以下俩个方式完成,一个用Decimal一个用round,两个的区别是Decimal("0.00")指定位数后,会自动补0,而round遇到0就自动舍掉了。而且round在四舍五入的计算中,还有点特殊。具体可查看官方文档。
  我们这里用Decimal来完成函数内相关操作。记得测试啊!  In [227]: from decimal import Decimal In [240]: a = 3.1 b=Decimal(a).quantize(Decimal("0.00")) print(b) 3.10 In [244]: round(a,2)  # 位数自动省略0 Out[244]: 3.1  In [247]: def handle_num(wb, sheetname):     """     按列循环, 通过参数确认目标     """     print(f"开始处理工作表:{sheetname}".center(18, "-"))     sheet = wb[sheetname]     for col in sheet.iter_cols(min_col=3, max_col=3, min_row=2):  # 找到时间的列, 第一列,从第二行开始         for cell in col:             print("修改前:", cell.value, end="") #             cell.value = round(float(cell.value), 3)             cell.value = " " + str(Decimal(cell.value).quantize(Decimal("0.00")))             print("修改后-》》",cell.value) In [249]: wb = load_data() handle_num(wb, "数字符号") save_as(wb)最后
  文章对你有帮助的话,记得帮作者点点赞
  接下来还会持续跟新有关Python的文章,点点关注不迷路。

晚报小米12真机亮相乐视宣布不会裁员,全员还涨薪嗨!尾巴们,晚上好今天是12月22日重磅新闻雷军小米12拍照速度可能是第一名!相机非常强小米米12将搭载全新的影像架构,具有相机上的新突破快,更稳。这一架构经过两年时间的技术研发,简看紫光股份我对我们公司紫光股份下面的新华三简单看法,最近新华三的业务都是大单特别多,中标12亿中国移动,苏软,腾讯,阿里,中国电信,联通,都是新华三的很重要客户,而且云计算的增加会缩小很多政新能源汽车行业市场现状新能源汽车行业市场销量分析新能源汽车是指采用非常规的车用燃料作为动力来源(或使用常规的车用燃料采用新型车载动力装置),综合车辆的动力控制和驱动方面的先进技术,形成的技术原理先进具有新技术新结构的汽车。新能源困在冬风里的新能源汽车车主们老车主成被遗忘的人我连近郊都不敢去,别说出远门了,这车给我扔路上过一次,大冷天等了2个小时救援,差点把我冻晕了。车龄超3年的新能源汽车老车主陈女士告诉新京报记者。到了冬天,电动汽车的续航衰减十分严重网售三无产品整改到位了吗?广东省消委会京东唯品会快手抖音等所涉问题商品基本下架羊城晚报讯记者马灿通讯员粤消宣报道23日,记者从广东省消委会获悉,为跟进掌握电商平台三无产品等问题的整改效果,广东省消委会近日组织开展回头看调查。结果显示,京东唯品会快手抖音等平台从5999元跌至2899元,128GB苹果A13,经典iPhone二手价再创新低有时候一款手机价格公布的那一刻,就可以推测出这款手机的最终销量好不好了,而苹果公司今年的新机iPhone13价格公布的那一刻,就已经可以确认它能成为爆款,因为它的价格真的有些低于预2022小米会员月历今日限量开售可用金币兑换,售价49元IT之家12月23日消息,今日小米正式推出了2022年小米会员月历。这款产品将于12月23日15点,在小米社区App中的会员商城开售。这款2022年月历限量发行,Lv1及以上会员可高级玩家必备,铠侠EXCERIAPROPCIe4。0固态硬盘入手体验在这个多媒体盛行的时代里,人们也对存储性能要求越来越强,我在视频剪辑和图片处理上,对存储设备的性能也有一定的要求,为了能有个大容量高速读写的硬盘,近日入手了铠侠EXCERIAPRO24如何添加手机画面专业虚拟直播间搭建教程直播专业虚拟直播间搭建教程与操作2440如何添加手机画面到直播中大家好,这节课我们学习在直播中如何添加手机画面,那我们在之前的如何添加手机摄像头这些课程里面呢,有学到一个办法就是用十几年前曾影响国产MP3发展,这家老牌音乐厂商居然还在出新品提起aigo,我总会想起多年前那个月光宝盒MP3,对了,就是上面这个玩意。这外观在今时今日来看可以说是平淡无奇了,但在十几二十年前,那可是影响了国内MP3发展的产品系列。月光宝盒其买手机追求性价比,但也不要盲目跟风,这几款就不错哈喽大家好,我是你们的老朋友小生,每天都会给大家更新我的原创内容,买手机千万不要盲目追风,今天推荐大家几款值得购买的机型,喜欢的朋友可以入手。第一款,一加8T。喜欢一加手机的用户非
公司装机究竟怎么选路由器?(本文开始前,首先声明是穷鬼向,有钱人左转网络公司)路由器是网络的核心,对于企业来说也是重中之重。传统企业多采用企业级路由器配合acap模式,达到自己的使用需求。但是这套配置轻则大2021不谈信仰的路由器推荐路由器是家庭网络的核心,一个家网络上的爽不爽一个好的路由器十分关键。今天不谈信仰,只谈体验。说说我在2021年推荐的800元以内的路由器。在此强调,以下推荐路由器含有部分魔改路由,vivoampampquot最惨ampampquot5G手机,44W快冲,降价一千多无人问津在当今的手机市场中,4G手机正在悄然退出市场,而5G手机已成为主要制造商推出的流行机型。在短短的一年内,市场上的5G手机层出不穷,vivo首次发布了该型号。5G手机已被遗忘,而正是郭世英之死重估郭沫若郭世英的中学时代是在北京有名的干部子弟学校101中度过的。在中学里他一直是班上的三好学生,模范共青团员,还被誉为高干子女的表率。那时,郭世英不仅成绩优秀,还是一个体育爱好者,是学校网站SEO优化做好能抵销售?杭州石炭纪用网站来干了销售的活在数字化时代该怎么做生意?首先你得有切实的产品,接着你需要搭建好自己的宣传矩阵,然后就需要做好营销推广,把自己的名头打响出去,让更多客户知道你,最后才是收获客户线索,达成生意。这其这样就能把新客户变成回头客?你的官网是否支持会员注册呢?客户对于一个企业来说就是运转下去的动力,所以如何获客成为了所有老板们最关心的事情,但仅仅是获得新客户就够了吗?当然不是,企业要做的绝对不仅仅是开拓新用户,想办法留住老客户,让客户愿如何用好在线表单功能获客?在使用在线表单时还遇到过哪些问题?在线表单这一功能在如今的各种类型网站中都很常见,有时候点开一家企业的官网,就能够直接在网站首页填写表单,注册网站会员。就算网站首页没有设置表单,往下翻一翻,往往也能够在网页底部看到为啥不推荐使用黑帽SEO?其实用LTD也能快速做好SEO优化想要让自己的网站被更多用户浏览,自然就需要提升网站在搜索引擎中的排名,这一过程被称为SEO优化。现如今绝大多数企业的网站都会进行SEO优化,但效果却各不相同。有些官网的排名上升速度营销物料多次上传太麻烦?没事,我们可以批量解决前不久有用户向我们反映我们现在要做一个新网站,可原来网站上的文章内容要一篇一篇手动上传到后台,真的太费时间了!的确,我们可以想象这么一个场景当你搭建好了自己的新官网,看着空荡荡的内使用官微中心文章编辑器时碰上了这几个问题?别担心工欲善其事,必先利其器。企业想要做好数字化营销,一个强大的企业官网后台是必不可少的。而其中,企业官网后台具备的营销物料的上传和分享功能则是会直接影响到企业官网数字化营销的结果。因此等等党的福利!这几款机型非常合适,网友不会再错过了RedmiK30至尊纪念版价格为2000元价位的产品,首先想到的肯定是刚刚发布的RedmiK30至尊纪念版,这部手机应该是这个价格下无脑购买的代表。总而言之一句话,放心大胆的购买就