幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

Pandas中高效的选择和替换操作总结

  作为数据科学家,使用正确的工具和技术来最大限度地利用数据是很重要的。Pandas是数据操作、分析和可视化的重要工具,有效地使用Pandas可能具有挑战性,从使用向量化操作到利用内置函数,这些最佳实践可以帮助数据科学家使用Pandas快速准确地分析和可视化数据。
  在本文中,我们将重点介绍在DataFrame上经常执行的两个最常见的任务,特别是在数据科学项目的数据操作阶段。这两项任务是有效地选择特定的和随机的行和列,以及使用replace()函数使用列表和字典替换一个或多个值。
  在本文中,我们将使用下面的数据集:扑克牌游戏数据集婴儿名字数据集
  我们使用的第一个数据集是扑克牌游戏数据集,如下所示。pokerdatapd。readcsv(pokerhand。csv)pokerdata。head()
  在每个回合中,每个玩家手里有五张牌,每一张牌都有花色:红心、方块、梅花或黑桃,以及它的数字,范围从1到13。该数据集由一个人可以拥有的五张卡片的每一种可能组合组成。
  Sn:第n张牌的符号,其中:1(红心),2(方块),3(梅花),4(黑桃)
  Rn:第n张牌的排名,其中:1(王牌),210,11(J),12(Q),13(K)
  第二个数据集是流行的婴儿名字数据集,其中包括2011年至2016年间最流行的新生儿名字:namespd。readcsv(PopularBabyNames。csv)names。head()
  该数据集还包括按年份、性别和种族划分的美国最受欢迎的名字。例如,2011年,Chloe这个名字在所有亚裔和太平洋岛民女性新生儿中排名第二。
  下面我们开始进入正题为什么需要高效的代码?
  高效代码是指执行速度更快、计算容量更低的代码。在本文中,我们将使用time()函数来测量计算时间,我们通过在执行前和执行后获取时间,然后计算其差值获得代码的执行时间。下面是一个简单的例子:importtimerecordtimebeforeexecutionstarttimetime。time()executeoperationresult52recordtimeafterexecutionendtimetime。time()print(Resultcalculatedin{}sec。format(endtimestarttime))
  让我们看一个提高代码运行时间并降低计算时间复杂度的示例:我们将计算每个数字的平方,从0到100万。首先,我们将使用列表推导式来执行此操作,然后使用for循环重复相同的过程。
  首先使用列表推导式:usingListcomprehensionlistcompstarttimetime。time()result〔iiforiinrange(0,1000000)〕listcompendtimetime。time()print(Timeusingthelistcomprehension:{}sec。format(listcompendtimelistcompstarttime))
  使用for循环来执行相同的操作:UsingForloopforloopstarttimetime。time()result〔〕foriinrange(0,1000000):result。append(ii)forloopendtimetime。time()print(Timeusingtheforloop:{}sec。format(forloopendtimeforloopstarttime))
  可以看到它们之间有很大的差异,我们可以用百分比来计算它们之间的差异:listcomptimelistcompendtimelistcompstarttimeforlooptimeforloopendtimeforloopstarttimeprint(Differenceintime:{}。format((forlooptimelistcomptime)listcomptime100))
  可以看到仅仅使用了不同的方法,但是在执行效率方面有了很大的不同。使用。iloc〔〕和。loc〔〕选择行和列
  这里我们将介绍如何使用。iloc〔〕。loc〔〕pandas函数从数据中高效地定位和选择行。我们将使用iloc〔〕作为索引号定位器,使用loc〔〕作为索引名定位器。
  在下面的例子中,我们选择扑克数据集的前500行。首先使用。loc〔〕函数,然后使用。iloc〔〕函数。rowsrange(0,500)Timeselectingrowsusing。loc〔〕locstarttimetime。time()pokerdata。loc〔rows〕locendtimetime。time()print(Timeusing。loc〔〕:{}sec。format(locendtimelocstarttime))
  rowsrange(0,500)Timeselectingrowsusing。iloc〔〕ilocstarttimetime。time()pokerdata。iloc〔rows〕ilocendtimetime。time()print(Timeusing。iloc〔〕:{}sec。format(ilocendtimeilocstarttime))
  loccomptimelocendtimelocstarttimeiloccomptimeilocendtimeilocstarttimeprint(Differenceintime:{}。format((loccomptimeiloccomptime)iloccomptime100))
  虽然这两个方法使用的方式是相同的,但iloc〔〕的执行速度比loc〔〕快近70。这是因为。iloc〔〕函数利用了索引的顺序,索引已经排序因此速度更快。
  我们还可以使用它们来选择列,而不仅仅是行。在下一个示例中,我们将使用这两种方法选择前三列。ilocstarttimetime。time()pokerdata。iloc〔:,:3〕ilocendtimetime。time()print(Timeusing。iloc〔〕:{}sec。format(ilocendtimeilocstarttime))
  namesstarttimetime。time()pokerdata〔〔S1,R1,S2〕〕namesendtimetime。time()print(Timeusingselectionbyname:{}sec。format(namesendtimenamesstarttime))
  loccomptimenamesendtimenamesstarttimeiloccomptimeilocendtimeilocstarttimeprint(Differenceintime:{}。format((loccomptimeiloccomptime)loccomptime100))
  可以看到,使用。iloc〔〕进行列索引仍然要快80。所以最好使用。iloc〔〕,因为它更快,除非使用loc〔〕更容易按名称选择某些列。替换DF中的值
  替换DataFrame中的值是一项非常重要的任务,特别是在数据清理阶段。
  让我们来看看之前加载的婴儿名字数据集:
  首先看看性别列:names〔Gender〕。unique()
  我们可以看到,女性用大写和小写两个值表示。这在实际数据中非常常见,但是对于我们来说只需要一个统一的表示就可以了,所以我们需要将其中一个值替换为另一个值。这里有两种方法,第一种是简单地定义我们想要替换的值,然后我们想用什么替换它们。如下面的代码所示:starttimetime。time()names〔Gender〕。loc〔names。Genderfemale〕FEMALEendtimetime。time()pandastimeendtimestarttimeprint(Replacevaluesusing。loc〔〕:{}sec。format(pandastime))
  第二种方法是使用panda的内置函数。replace(),如下所示:starttimetime。time()names〔Gender〕。replace(female,FEMALE,inplaceTrue)endtimetime。time()replacetimeendtimestarttimeprint(Timeusingreplace():{}sec。format(replacetime))
  可以看到,与使用。loc()方法查找值的行和列索引并替换它相比,内置函数的快了157。print(Thediffernce:{}。format((pandastimereplacetime)replacetime100))
  我们还可以使用列表替换多个值。比如说将所有WHITENONHISPANIC或WHITENONHISP都改为WNH。这里我们使用。loc〔〕函数和or语句定位我们正在寻找的种族。然后进行替换赋值。starttimetime。time()names〔Ethnicity〕。loc〔(names〔Ethnicity〕WHITENONHISPANIC)(names〔Ethnicity〕WHITENONHISP)〕WNHendtimetime。time()pandastimeendtimestarttimeprint(Resultsfromtheaboveoperationcalculatedinsseconds(pandastime))
  或者使用pandas内置。replace()函数执行相同的操作,如下所示:starttimetime。time()names〔Ethnicity〕。replace(〔WHITENONHISPANIC,WHITENONHISP〕,WNH,inplaceTrue)endtimetime。time()replacetimeendtimestarttimeprint(Timeusing。replace():{}sec。format(replacetime))
  我们可以再次看到,使用。replace()方法比使用。loc〔〕方法快得多。为了更好地直观地了解它有多快,让我们运行下面的代码:print(Thediffernce:{}。format((pandastimereplacetime)replacetime100))
  。replace()方法比使用。loc〔〕方法快87。如果数据很大,需要大量的清理,它将有效的减少数据清理的计算时间,并使pandas代码更快。
  最后,我们还可以使用字典替换DataFrame中的单个值和多个值。如果想在一个命令中使用多个替换函数,这将是非常有用的。
  我们要用字典把每个男性的性别替换为BOY,把每个女性的性别替换为GIRL。namespd。readcsv(PopularBabyNames。csv)starttimetime。time()names〔Gender〕。replace({MALE:BOY,FEMALE:GIRL,female:girl},inplaceTrue)endtimetime。time()dicttimeendtimestarttimeprint(Timeusing。replace()withdictionary:{}sec。format(dicttime))
  namespd。readcsv(PopularBabyNames。csv)starttimetime。time()names〔Gender〕。replace(MALE,BOY,inplaceTrue)names〔Gender〕。replace(FEMALE,GIRL,inplaceTrue)names〔Gender〕。replace(female,girl,inplaceTrue)endtimetime。time()listtimeendtimestarttimeprint(Timeusingmultiple。replace():{}sec。format(listtime))
  比较这两种方法,可以看到使用字典的运行速度快了大约22。
  使用字典可以替换几个不同列上的相同值。我们想把所有种族分成三大类:黑人、亚洲人和白人。这里的代码也非常简单。使用嵌套字典:外键是我们要替换值的列名。值是另一个字典,其中的键是要替换的字典。starttimetime。time()names。replace({Ethnicity:{ASIANANDPACI:ASIAN,ASIANANDPACIFICISLANDER:ASIAN,BLACKNONHISPANIC:BLACK,BLACKNONHISP:BLACK,WHITENONHISPANIC:WHITE,WHITENONHISP:WHITE}})print(Timeusing。replace()withdictionary:{}sec。format(time。time()starttime))总结使用。iloc〔〕函数可以更快地选择行和列并且它比loc〔〕要快,但是loc〔〕提供了一些更方便的功能,如果速度不是优先考虑或者iloc〔〕实现的比较麻烦的话,再考虑使用loc〔〕。使用内置的replace()函数比使用传统方法快得多。使用python字典替换多个值比使用列表更快。
  作者:YoussefHosni

观生自然丨藤蔓上的风景七桥瓮湿地公园一直封闭着,不知是因为疫情还是基建,但园里沿着运粮河的草丛中,短柱铁线莲(Clematiscadmia)一定附高缘远,兴盛着淡紫色的风景。花儿极多,那56枚或宽或……51!三镇挡不住,狂胜4豪门,该学山东人情世故,不然很难混中中超武汉三镇山东泰山中超第12轮结束了一场焦点大战,武汉三镇51主场大胜北京国安,马尔康上演大四喜,戴维森打进锦上添花的一球,国安这边仅仅只有张玉宁上半场打进1球,这场比赛结束……大乱斗英雄折磨对面,快乐自己(2)哈喽,各位小伙伴们又给你们带来折磨对面的英雄了,上次的莫甘娜有没有去试一试,感觉如何,是不是套路很受用啊好,那今天又给大家带来了两个也是大乱斗里的常客,同样折磨,那就是y……有些感染不是大病,但孕期发生则可能要命妊娠期是一个特殊的时期,这个时候身体会发生很多变化,不仅饮食作息要注意,更要格外小心预防生病,一方面病了不好用药,另一方面,某些疾病更是对胎儿有影响,影响其生长发育,比较常见的……什么是FashionWeek?对于我们普通人来说时装周就像是场drama!事实上时装周是二战的一个产物当时巴黎是唯一的全球时尚中心,但是受到战争的影响,服装业的记者、订货商无法飞往巴黎进行时装报道与订货,于……祝福!冬奥冠军32岁老将官宣恋情,男友比他小5岁,高大又帅气在本届北京冬奥会中,中国队收获颇丰,最终拿到了9枚金牌。在这九枚金牌中,有一枚是由徐梦桃争取得到。徐梦桃是中国女子空中技巧国家队中的主力,她今年32岁,总共参加过4届冬奥会。对……同样1999元,RedmiK40SOPPOK10iQOONe2011年8月16日,在雷军的一声1999元中,初代小米手机正式发布。这么多年过去,虽然小米数字系列的起售价,早已翻了又翻。但当时的1999,却仿佛成为了机圈中,一……约维奇要走?皇马收到纽卡初步报价,7000万转会费很有诚意根据巴博体育(五大联赛、欧冠、世界杯等)数据显示:眼看冬季转会窗口马上就要关闭了,现如今,各支球队正在积极的进行着补强。同时,也在清理一些队内不需要的球员,比如最近在转会传闻里……高速上车没油了怎么办?老司机别着急,这4个方法可以解决现在大多数人都买了一辆汽车,无论是日常代步还是外出旅游,都相当方便。尤其是很多地方都有高速公路,大家在行驶途中会减少很多时间。虽然在高速上驾驶汽车很轻松,但是一旦遇到问题,车主……动荡的大脑我是斜杠青年,一个热爱前沿科学的杂食性学者!大脑和环境之间的能量流动驱动着维持生命的非平衡。动荡能帮助我们茁壮成长吗?莱昂纳多达芬奇的水研究。来源:科学共享图库……美国总统拜登提名印度裔美国科学家ArtiPrabhakar为据印度报业托拉斯6月22日报道,著名印度裔美国科学家阿尔蒂普拉巴卡尔(ArtiPrabhakar)博士被乔拜登提名为美国总统的高级科学顾问,白宫和印度裔美国人社区称赞这一决定是……调查顺丰保价索赔难频上热搜背后快递员称能提成保费20资料图。图据视觉中国9月23日,顺丰集团发布声明,对于连续热搜引发的社会关切深表歉意。红星资本局注意到,9月以来,顺丰接连陷入保价赔偿之争,几度被推上舆论的风口浪尖。如今……
12,输球又输人!U20美洲杯大冷门阿根廷遭遇开门黑,沦为垫上个月,梅西带领阿根廷国家队捧起卡塔尔世界杯冠军,时隔36年再度拿到大力神杯,球衣队徽绣上了三颗星星。北京时间1月22日凌晨,马斯切拉诺执教下的阿根廷U20男足身披三星球衣首秀……新路2023美迪装饰钟菊成2023年是突围和重生的一年编者按:2023年,如期而至,崭新又充满生机。开辟新赛道、新业务、新渠道,扩大市场份额;寻求融资、上市,借助资本力量前行;迈步出省扩展,家居企业发展欣欣向荣2023年,家……开年即开跑澄海区隆都镇打造乡村振兴示范样板和旅游目的地我们将按照省委、市委、区委关于实施‘百县千镇万村高质量发展工程’的目标要求,进一步优化工作思路、深化任务措施、强化责任落实,用心用情把隆都打造成全市乃至粤东地区乡村振兴的示范样……31分7板6助!27分10助!两人表现惊艳,已得到乔尔杰维奇杜锋带领中国男篮拿到了2023年世界杯门票之后,他就被宣布下课,接任杜锋成为中国男篮新主教练的人是来自塞尔维亚的乔尔杰维奇。乔尔杰维奇今年55岁,在球员时期,他曾经是欧洲篮坛的……喜欢他穿超短裙,刚柔并济的感觉最近,今年25岁的法国时尚男模特RayanRicci(拉扬瑞奇)参加了伦敦时装周博柏利BURBERRY的大秀,他穿上超短裙出席,造型非常吸睛。我觉得这个造型真的不错,不仅……作为新型组织形式,共享经济的发展,给我们带来了哪些好处?共享经济作为一种新型经济组织形式,是在互联网平台上精准连接供给与需求,并重新分配剩余资源,形成人人为我、我为人人的新型商业模式。随着我国互联网产业日益发展,互联网技术不断……巴拉多利德VS巴伦西亚上赛季在西乙联赛中获得了第二名,一个赛季后重返西甲。升班马本赛季的实力得到了一定的提升,他们现在的得分仅为17分,在降级区内,主场4胜1平4负,在抢分方面表现得相当出色。巴拉多……中药里的消炎药,肺炎,咽炎,胃炎,尿道炎,一切炎症皆可用很多人只要体内一有炎症就会去吃一些消炎药来改善,但是很多消炎药里面的抗生素的成分都比较多,长期服用会对我们的身体造成一些损害,今天李医生就来给大家解读一个中医界的消炎药三黄泻心……第一次来婺源,看这份攻略就够了,这6个景点一定要收藏好阳春三月春暖花开时,一定要去一次婺源上一篇推荐了婺源赏花期这期分享赏花路线和赏花景点攻略记得保存好。千万别丢了1赏花路线:婺源赏花重要景点分为东线……听听专家回应,孕产妇儿童应如何做好健康防护?居家该备什么药?为切实维护母婴安全,最大程度保护孕产妇和儿童生命安全与身体健康,12月9日,国务院联防联控机制发布《关于进一步做好当前孕产妇和儿童健康管理与医疗服务保障工作的通知》,要求确保孕……国产自主可控的北斗三号蓝牙盒子PD18(ChinaIT。com讯)北斗盒子五代PD18语音版是广州磐钴智能科技有限公司推出的一款通用型北斗设备,集成北斗三号RDSS短报文通信、RNSS定位、蓝牙通信、落水报警和语音……这才是新手化妆的正确打开方式!普通女孩也能快速变美Hi美少女们大家好呀最近很多姐妹都有在后台问新手如何画出适合自己的妆容。别人化完妆干净自然又高级,自己化妆的时候总是会出现各种各样的问题:化妆品、化妆工具不会挑选,……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网