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

Python自动化ExcelPython与pandas字符串操作

  Python之所以能够成为流行的数据分析语言,有一部分原因在于其简洁易用的字符串处理能力。
  Python的字符串对象封装了很多开箱即用的内置方法,处理单个字符串时十分方便;对于Excel、csv等表格文件中整列的批量字符串操作,pandas库也提供了简洁高效的处理函数,几乎与内置字符串函数一一对应。也就是说:  单个字符串处理,用Python内置的字符串方法;  表格整列的字符串处理,用pandas库中的字符串函数;
  本文就以常用的数据处理需求,来对比使用以上两种方式的异同,从而加深对   Python   和  pandas   字符串操作的理解。(本文所有数据都是为了演示用的假数据,切勿当真!) 一、替换(去除空格)
  场景:在问卷收集的姓名字段中,不少填写者会误输入空格,造成数据匹配不一致的问题。  Pythonnames = "刘    备、关  羽、   张 飞、赵   云、马 超、黄 忠" names = names.replace(" ","") print(names)
  output  刘备、关羽、张飞、赵云、马超、黄忠pandasdf["姓名"] = df["姓名"].str.replace(" ","")
  output
  pandas替换空格二、分列
  场景:在问卷收集数据的时候,多选题的数据往往是带有分隔符的。在分类汇总前往往需要按分隔符进行分列。
  问卷中多选数据导出PythonhobbyStr = "足球 排球 羽毛球 篮球" hobbyList = hobbyStr.split(" ")
  output  ["足球", "排球", "羽毛球", "篮球"]pandas# 利用split进行分列,expand = True 返回dataframe;expand=False返回Series hobbyDf = df["爱好"].str.split("|", expand=True) # 将hobbyDf 与 df安装索引合并 df2 = pd.merge(df, hobbyDf, how="left", left_index=True, right_index=True)
  分列、合并、导出Excel后效果三、切片:截取数据
  字符串是由一个个字符组成的序列,在Python中可以直接对字符串进行切片操作,来进行截取数据。
  如"XX市四季家园二区22幢203室",可以看作是下图中16个字符值组成的序列。而切片的语法是:
  Python切片原理PythonaddressStr = "XX市四季家园二区22幢203室" print(f"城市:{addressStr[:3]}") print(f"小区:{addressStr[3:9]}")
  output  城市:XX市 小区:四季家园二区pandas提取城市名称,由于城市名称的字数相同,可以直接切片截取前三个。  df["城市"] = df["地址"].str[:3]
  提取城市提取小区名,稍有点复杂。因为小区名称长度是不一样长的。可以利用字符串处理的天花板:   正则表达式   。详细处理方法,见下文  五、正则表达式   示例1。 四、补齐数据
  有时候,我们在电脑中按文件名排序的时候,你可能会遇到下面的情况:
  数值排序和字符排序
  在不同系统中,我们希望是按数值排序,但偏偏系统却是按字符排序的,如某些车载播放器中。比较好的解决方法就是在前面添加0,补齐数据位数。数据量大的时候,手动修改很麻烦,Python字符串处理的   zfill()   函数就可以解决这个问题。 PythonmyStr = "1章节" print(myStr.zfill(4))  # 整个字符串补齐到4位
  output  01章节pandasdf["新文件名"] = "第"+df["文件名"].str[1:].str.zfill(8)
  image-20220330005403437
  配合   os.rename()   便可以批量重命名。关键代码如下 df.apply(lambda x: os.rename( path + x["文件名"], path + x["新文件名"]), axis=1)
  批量重命名演示五、正则表达式
  遇到复杂的字符串处理需求时,Python有优势就可以体现出来了。因为python和pandas有一个超强的字符串处理武器:正则表达式。正则表达式可以匹配字符串的格式特点,如电子邮箱的地址格式、网址的地址格式、电话号码格式等。如何写好正则表达式,这是一门精深的学问,本文介绍几个正则表达式的常用案例,浅尝辄止。
  注:Python默认不支持正则表达式语法,而pandas直接支持正则表达式语法,这里重点介绍pandas处理表格数据。  1.提取长度不一样的小区名
  思路:  提取上面小区名,可以归纳一下地址中小区名的格式特点:   苏州市之后,幢号数字之前的中文字符   。 Series   的  str.extract()   ,可用正则从字符数据中抽取匹配的数据; ## 匹配中文字符的正则表达式: [一-龥] pattern = r"苏州市([一-龥]+)[0-9]+幢" df["小区"] = df["地址"].str.extract(pattern, expand=False)
  提取小区名2.提取几幢几室
  思路:几幢几室,格式都是   数字+幢   和  数字+室  数字可以用   [0-9]   或  d   来匹配; +   表示1个或多个。 pattern = r"([0-9]+)幢" df["幢号"] = df["地址"].str.extract(pattern, expand=False)  pattern = r"(d+)室" df["室号"] = df["地址"].str.extract(pattern, expand=False)
  提取幢号室号六、apply函数
  apply 函数:可以对   DateFrame   进行逐行或逐列进行处理。 1.增加一列,将幢号按照奇偶数分类
  将幢号为奇数的为A区,偶数的为B区  # 定义处理的函数,共apply函数调用,传入的参数为一个Series对象 def my_func(series):     if (series["幢号"]) % 2 != 0:         return "A区"     else:         return "B区"  df["幢号分类"] = df.apply(my_func, axis=1)
  上述代码中apply函数,有两个参数  第一个参数:处理逻辑的函数名。主要传入名称,这里为   my_func   ; 第二个参数:   axis = 1   ,表示按列处理。即传入的是每一行的  Series   。
  output
  apply映射分类2.增加一列,字典映射def my_func2(series):     # 映射字典,key为小区名,value为小区称号     my_dict = {     "吉祥如意家园": "最佳好运小区",      "科技村": "最佳科创小区",      "四季家园": "最佳风光小区",       "万象更新家园": "最佳风采小区",     }     # 每一行小区名称,切片截取至倒数第2个,即-2     nameKey = series["小区"][:-2]     return my_dict[nameKey]  df["小区称号"] = df.apply(my_func2, axis=1)
  output
  apply匹配映射结语
  本文演示的字符串操作:   替换   、  分列   、  切片截取   、  补齐数据   、  正则表达式   、  apply()函数   常见于数据分析的数据清洗环节,  替换   、  分列   、  切片截取   在Excel中也很容易实现,  正则表达式   可以说是Python处理复杂字符串问题的一大利器,  apply()函数   可以实现  自定义函数   处理表格型的数据,十分灵活、威力巨大
  原文参考:https://www.cnblogs.com/wansq/p/16080208.html

5688!辽宁队吞下惨败,杨鸣微笑面对,丛明晨10中2,奇兵14107月15日晚上,CBA夏季联赛,辽宁对阵青岛,第一节就十分低迷,竟然以1431的比分落后,第二节打出1824。下半场,辽宁继续被动,丝毫不见反扑的势头。第四节,青岛队直接打出1957月16入伏,饮食有妙招,多吃3花2果,整个三伏天倍有劲儿这几天的温度,相信大家都见识到了吧,面对这样的高温天气,很多人都是待在空调房里不外出,火辣辣的太阳炙烤着大地,暴雨说下就下,但是却丝毫没有凉爽的感觉,反而觉得燥热的空气中还卷着水汽夏联第四场,火箭三大新秀又有全新亮眼表现夏联第四场,火箭77比85不敌开拓者。本场赛前确定,克里斯托弗因右髋酸痛,将缺席剩余的夏联比赛。我们继续来看三大新秀的表现。贾巴里史密斯今天13投7中,罚球7中5砍下19分10篮板睡不好可能是不了解睡眠每天都要睡觉,但是你并不需要真正地理解它。要想保持身体健康,不要犯下列错误数羊未必有效有不少人,一夜无眠,就在自己的被窝里数羊,一个两个三个,最后不但没有睡着,反倒是越数越是精神。粤媒疑似嘲讽海港不差钱花3900万的外援只进了10个球就走了北京时间7月15日,一家之前名字为恒大未赢够的体育媒体竟然报道出上海海港外援调整的消息,这家专注报道中超豪门广州队的广州媒体,对海港队的报道也疑似有嘲讽海港引援不差钱的嫌疑,称海港4强赛即将开始,马龙高远内战,王曼昱约战伊藤,孙颖莎对阵早田WTT球星赛晚上结束了男女单打18决赛的比拼,国乒主力选手表现强势,尽管王楚钦遭遇巴西选手雨果的强烈挑战,但最终激战五局胜出。林高远面对奥恰洛夫的进攻,打得很主动,他30轻松胜出。转会汇总C罗身穿曼联训练裤健身,晒照暗示留队?夏季转会窗现已开启,每天带大家一同跟进足坛转会最新动态!罗马诺Herewego!利桑德罗马丁内斯加盟曼联罗马诺曼城门将扎克斯特芬接近租借加盟米德尔斯堡迪马济奥米兰有望下周签下德凯特喝酒配花生,度数越高越危险?50岁后,尽量少吃这4种下酒菜花生配酒,越喝越有酒桌上与亲朋好友一起喝酒,那么花生米可以说是必不可少的,花生米和酒一直是酒桌上面的最佳情侣。那么肯定很多人会问,花生米怎么可以这么受欢迎呢?花生米具有制作简单,价网传NSPro将于年内公布?你是否期待这款新主机?昨晚,猎天使魔女3将于10月28日发售的公布令许多玩家兴奋不已。但与此同时,这也牵扯出了另一个问题NintendoSwitchPro(以下简称NSPro)究竟什么时候能推出呢?置身入伏先忌姜,别忘喝3汤!明日入伏,3汤怎么做?早懂早受益所谓入伏,就是要进入一年当中最炎热的季节,古有历书规定夏至三庚便数伏,也就是说从夏至开始往后数,到第三个庚日就开始入伏了。明日就要入伏了,俗话说入伏先忌姜,别忘喝三汤,三汤要怎样做什么可以包治百病?健康真知计划世界上有没有什么可以包治百病?这个问题的答案,非常奇怪,因为人们对于答案的看法是矛盾的。一方面每个人都不相信有什么可以包治百病,但是一方面每个人又都承认很多包治百病的东
清仓式减持,惊现割韭菜操作!深圳国资耐人寻味上市近30年,深圳国资旗下的特力A,留给投资者最深的记忆便是妖王的称号。业绩乏善可陈,股价大起大落概念层出不穷,转型遥遥无期麻烦如影随形,股民受伤深重。但是,笑到最后的仍是深圳国资看2023叮咚买菜徐志坚持续提升商品力服务力运营力站在2022岁末,看2023年,企业家作为中国经济的重要力量,如何看待当前的中国经济政策,对未来中国经济有何期待?新京报贝壳财经邀请百余位来自各行各业的企业家,以问卷方式完成对新一还剩3天,别忘确认这笔钱你的2023年度个人所得税专项附加扣除确认了吗?专项附加扣除可在个税税前扣除,相当于少交了一笔税。根据政策规定,专项附加扣除信息需要在每年12月进行确认,才能在下一个年度继续享受专韩国月球轨道探测器成功进入预定绕月轨道中新社首尔12月28日电(记者刘旭)据韩国航空宇宙研究院和科学技术信息通信部当地时间28日消息,韩国首个月球轨道探测器赏月号(Danuri)于27日成功进入预定的绕月飞行轨道。赏月智能手表越贵越好?四大维度对比OPPO华为小米三款旗舰手表如今智能手表成为了手腕上不可或缺的时尚单品,不仅外观设计越来越时尚精致,运动记录健康监测接打电话等功能也日渐丰富,而价格自然也是水涨船高,像是AppleWatchUltra已经突破搭载RK3588旗舰芯片的主机有多强?支持8K视频,影塔K8播放器测评不知道大家发现了没有,现在搭载ARM架构芯片的数码产品越来越受欢迎了,其实一般人估计不太理解ARM架构和X86架构的芯片有啥区别,其实通俗的说,就是电脑一般会用X86架构,因为性能智能家居走入千家万户,如何保障我们的数据安全?前段时间,臭名昭著的黑客勒索团伙ViceSociety在网站上发布了从摩洛哥和科威特宜家商场所盗取的数据,这已不是宜家首次面临的数据安全问题,去年12月宜家的公司邮箱也成为了黑客团十年磨一剑,王者归来的华为Mate系列,永远值得相信文黄海峰今年9月,华为发布了暌违两年的高端旗舰Mate50系列。虽迟必到的Mate50系列发布后遭到国内外用户一致的抢购热潮,开售日当天,各大华为专卖店纷纷排起长队。更值得一提的是苹果iOS16。2出现BUGAirPods充电盒在iPhone上电量显示0IT之家12月17日消息,苹果于12月13日推出了iOS16。2更新,引入了iCloud端到端加密功能高级数据保护AppleMusic唱歌无边记应用等。不过用户在更新至iOS16。12月最新Adobe2023全家桶,震撼来袭!一键安装,永久使用!Adobe系列软件是摄影师和设计师的必备软件,我们处理照片和视频都要用到Adobe系列软件的更新十分快每一次的升级功能体验均获得再次提升Adobe2023全家桶12月WIN修复早期混剪视频必备,特殊视频编码格式,MKVMOV素材直接导入AEPR!做后期的小伙伴们肯定都知道,AE或是Pr,它们自身是不支持mkvmov视频素材的导入,我们必须借助第三方解码器才能导入,那么蜜蜂菌今天带来一款插件AutokromaInflux就是