当前位置: 首页 > 科技观察

你离数据科学家只差26种Python技能

时间:2023-03-18 01:32:16 科技观察

Python是目前世界上最好的编程语言之一。因为:1.简单易学2.用途广泛3.有很多开源支持(大量的模块和库)作者PeterGleeson是一名数据科学家,他的日常工作几乎离不开python。一路走来,他积累了很多有用的技巧和技巧,现在他将把这些技巧分享给大家。提示将根据其首字母以A-Z顺序呈现。ALLORANYPython如此受欢迎的原因之一是它的可读性和表达力非常强。Python因此常被嘲笑为“可执行的伪代码”。如果你不相信我,请看:x=[True,True,False]ifany(x):print("AtleastoneTrue")ifall(x):print("NotoneFalse")ifany(x)andnotall(x):print("AtleastoneTrueandoneFalse")BASHPLOTIB你想在控制台上画画吗?$pipinstallbashplotlib现在您在控制台中有了绘图COLLECTIONSPython有一些很棒的默认数据类型,但有时它们无法按照您希望的方式工作。幸运的是,Python标准库提供了collection模块。它允许您使用更多样化的数据类型。fromcollectionsimportOrderedDict,Counter#Rememberstheorderthekeysareadded!x=OrderedDict(a=1,b=2,c=3)#Countsthefrequencyofeachcharactery=Counter("HelloWorld!")DIR面对一个Python对象,有没有想过可以直接看到它的属性?您可以尝试以下代码:>>>dir()>>>dir("HelloWorld")>>>dir(dir)在运行Python动态探索您正在使用的对象和模块时,这是一个非常有用的函数。有关更多详细信息,您可以在此处查看:https://docs.python.org/3/library/functions.html#dirEMOGI是的,您没有看错!$pipinstallemoji使用python创建模因,你也可以。fromemojiimportemojizeprint(emojize(":thumbs_up:")):+1:FROM_GUTURE_IMPORTPython非常流行,这导致它的版本更新非常快,新版本往往会有很多新特性。如果你不更新,你将无法使用它。但是,不要害怕。__future__模块允许您从未来版本中导入功能。有点像穿越时空!from__future__importprint_functionprint("HelloWorld!")GEOPY地理对于程序员来说是一个非常具有挑战性的领域。但是,geopy模块使它变得非常简单。$pipinstallgeopy它通过提取一堆不同地理编码服务的API来工作,让您获得一个地方的完整街道地址、纬度、经度,甚至海拔高度。还有一个有用的“距离”类别。它使用您选择的度量标准计算两个位置之间的距离。fromgeopyimportGoogleV3place="221bBakerStreet,London"location=GoogleV3().geocode(place)print(location.address)print(location.location)HOWDOI有时您遇到一个编程问题,并觉得您以前已经看到了它的解决方案。但我记不清具体是什么样子了。所以你想在StackOverflow上找到它,但又不想离开这个终端。这时候你就需要下面这个工具——howdoi$pipinstallhowdoi你遇到什么问题都可以提出来,它会尽最大努力给你答复。$howdoverticalaligncss$howdoiforloopinjava$howdoiundocommitsingit注意-它只从StackOverflow上最热门的答案中获取代码。所以它并不总是返回给你最有用的信息...$howdoiexitvimINSPECTPython的inspect模块用于收集有关Python对象的信息,你可以获得有关类或函数的参数、源代码、解析堆栈等的信息。下面的代码示例使用inspect.getsource()打印自己的源代码。还可以使用inspect.getmodule()来打印定义inspect.getmodule()的模块。***一行代码是打印该行代码的行号。在这种情况下,这是4。importinspectprint(inspect.getsource(inspect.getsource))print(inspect.getmodule(inspect.getmodule))print(inspect.currentframe().f_lineno)inspect模块可以有效地让你知道你的代码是如何工作的,你也可以用它来完成一些个人源代码。JEDIJedi库是一个用于代码自动补全和静态分析的库。它使您可以更快、更高效地编写代码。除非您正在开发自己的编辑器,否则您可能真的会喜欢Jedi作为您自己的编辑插件。您可能已经在使用Jedi只是没有意识到而已。IPython项目使用Jedi来实现其自动完成功能。**KWARGS无论您学习哪种语言,学习过程中总会有一些里程碑。理解神秘的**kwargs语法应该算是Python编程学习的一个重要里程碑。字典前面的双星“**”允许您将字典的内容作为命名参数传递给函数。字典的键是参数的名称,键的值作为参数的值传递给函数。如下:dictionary={"a":1,"b":2}defsomeFunction(a,b):print(a+b)return#thesedothesamething:someFunction(**dictionary)someFunction(a=1,b=2)当你想创建一个需要能够处理事先没有定义的参数的函数时,那么你需要使用上面提到的技术。LISTCOMPREHENSIONS列表推导(listcomprehension)列表推导可以说是我最喜欢的Python技能之一。这种表达方式可以让你写出像自然语言一样容易理解的代码,同时也非常简洁。您可以通过此链接了解更多关于列表理解的使用。地址:https://www.learnpython.org/en/List_Comprehensionsnumbers=[1,2,3,4,5,6,7]evens=[xforxinnumbersifx%2is0]odds=[yforyinnumbersifynotinevens]cities=['伦敦','Dublin','Oslo']defvisit(city):print("Welcometo"+city)forcityincities:visit(city)MAPPPython有许多非常有用的内置函数。其中之一是map()-特别是与lambda函数结合使用时。x=[1,2,3]y=map(lambdax:x+1,x)#printsout[2,3,4]print(list(y))在这个例子中,map()为每个一个简单的lambda函数应用于每个元素。它返回一个映射对象,可以将其转换为可迭代对象,例如列表或元组。NEWSPAPER3Knewspaper3k,如果你还没有看过,那么你可能会对这个Python报纸模块感到惊奇。它允许您从一系列领先的国际出版物中检索新闻和相关元数据。您可以搜索图像、文本和作者姓名。它甚至有一些内置的自然语言处理能力。因此,如果您正在考虑为您的下一个项目使用BeautifulSoup或其他自制爬虫库。好吧,省时省力,您真正需要的只是$pipinstallnewspaper3k。OPERATOROVERLOADING(运算符重载)Python支持运算符重载。“运算符重载”其实是一个简单的概念。你有没有想过为什么Python允许你使用“+”运算符同时添加和连接字符串?这就是运算符重载的作用。您可以使用Python的标准运算符表示法定义对象,这样您就可以在特定的上下文中使用特定的对象,如下例所示。classThing:def__init__(self,value):self.__value=valuedef__gt__(self,other):returnsself.__value>other.__valuedef__lt__(self,other):returnsself.__valuenothing#Falsesomething>>file=open('file.txt','r')>>>print(file)这样调试更方便,具体定义method如下:classsomeClass:def__repr__(self):return""someInstance=someClass()#printsprint(someInstance)SHsh库允许你像调用方法一样调用系统中的命令。importshsh.pwd()sh.mkdir('new_folder')sh.touch('new_file.txt')sh.whoami()sh.echo('Thisisgreat!')TYPEHINT(类型提示)Python是动态类型的语言。定义变量、函数和类时,不需要指定数据类型。这可以大大提高您的开发速度,但这是有代价的。由于简单的输入问题,您可能会遇到错误。在Python3.5之后,这不是问题。您可以选择在定义函数时是否提供类型提示。defaddTwo(x:Int)->Int:returnx+2您还可以定义类型别名:fromtypingimportListVector=List[float]Matrix=List[Vector]defaddMatrix(a:Matrix,b:Matrix)->Matrix:result=[]fori,rowinenumerate(a):result_row=[]forj,colinenumerate(row):result_row+=[a[i][j]+b[i][j]]result+=[result_row]返回结果x=[[1.0,0.0],[0.0,1.0]]y=[[2.0,1.0],[0.0,-2.0]]z=addMatrix(x,y)虽然不是强制的,但是类型注释可以让你的代码更容易理解。它们还允许您使用类型检查工具在运行它们之前捕获这些杂散类型错误。如果您正在处理大型、复杂的项目,类型注释可能会非常有用。UUIDPython标准库中的uuid模块可以快速轻松地生成统一的唯一ID(也称为UUID)。importuuiduser_id=uuid.uuid4()print(user_id)UUID是一个128位的全局唯一标识符,通常用32字节的字符串表示。可以保证时间和空间的唯一性,又称GUID,全称:UUID——UniversallyUniqueIdentifier,Python中称为UUID。它通过MAC地址、时间戳、命名空间、随机数和伪随机数来保证生成的ID的唯一性。虚拟环境这可能是我最喜欢的Python技巧。您可能经常处理多个Python项目,不幸的是,有时不同的项目依赖于不同版本的Python。这个时候,你应该在系统中安装哪个Python版本呢?好在Python可以支持建立不同的虚拟环境来满足不同版本的需求。python-mvenvmy-projectsourcemy-project/bin/activatepipinstallall-the-modules现在您可以在一台机器上安装和运行各个版本的Python。奇妙!WIKIPEDIAWikipedia有一个很棒的AP??I,允许用户以编程方式访问wiki条目。在Python中使用wikipedia模块将允许您以最方便的方式访问API。importwikipediaresult=wikipedia.page('freeCodeCamp')print(result.summary)forlinkinresult.links:print(link)与真实站点一样,该模块支持多种语言、页面消歧、随机页面检索,甚至donate()方法。YAMLYAML是“YAMLisnotamarkuplanguage”的外语缩写。它是一种数据格式化语言,是JSON的超集。与JSON不同,它可以存储更复杂的对象,并且可以引用它自己的元素。还可以写注释,这让YAML特别适合写配置文件。PyYAML模块允许您从Python调用YAML。使用以下语句安装:$pipinstallpyyaml然后导入到项目中:importyamlPyYAML使您能够存储任何数据类型的Python对象,以及任何用户定义类的实例。ZIP***一招也很爽。你有没有想过将两个列表的元素一个一个映射成一个字典?那么你应该使用zip。keys=['a','b','c']vals=[1,2,3]zipped=dict(zip(keys,vals))内置函数zip()接收几个可迭代对象,然后返回一个包含多个元组的列表。每个元组根据输入对象的位置索引对其元素进行分组。也可以使用*zip()来“解压缩”对象。Python大法好,掌握这些小技巧,助你披荆斩棘,在Python高手之路上立于不败之地。