学习Pandas是很棒的体验,学习Numpy也很有趣。但是,你是否过早地开始使用程序库了呢?这也许是因为你还没有意识到pure python的魅力。

作者:读芯术

学习Pandas是很棒的体验,学习Numpy也很有趣。但是,你是否过早地开始使用程序库了呢?这也许是因为你还没有意识到pure python的魅力。

如果是这样的话,那么这篇文章会对你很有帮助。

本文将介绍几个非常有趣的pure python功能,这些功能是在日常数据科学工作中十分常用的。在整个数据准备阶段都都可以大量地使用它们(大量用于数据清理),甚至在绘制之前也可以使用它们来聚合数据。

希望你也可以将这些技巧运用到项目中。尽管没有运行时的速度或性能优势,但是与从零开始实施此逻辑相比,这将为你节省大量时间。因此,言归正传,让我们来看第一点吧!

1、拉姆达函数(Lambda Functions)

拉姆达函数非常强大。当然,当必须以相同的方式清理多个列时,我们不会使用它,但这并不是经常遇到的情况。通常情况下,每个属性在清理后都需要自己的逻辑。

Lambda函数允许创建“匿名”函数。这基本上意味着可以快速生成特定函数,而无需使用pythonsdef来正确定义函数。

尽管如此,请记住Lambda函数主要被设计成one-liners,因此它应该用于简单的东西。对于更复杂的逻辑,则需要使用常规函数。

里将展示两个具体示例,通过这些示例,我们无需为所有项目定义函数,从而可以节省许少时间。虽然第一个示例可能不会在现实中常用,但值得一提。这就是对数字求平方。

#regular function
def square_number(x): res = x ** 2 return res# lambda function
square = lambda x: x ** 2# results
print('square_number(4): {}'.format(square_number(4)))
print('square lambda: {}'.format(square(4)))>>> square_number(4):16
>>> square lambda: 16 

上面的代码片段以常规方式和lambda函数的方式完成了相同逻辑的实现。虽然结果是一样的,但是lambda的单行看起来舒服多了!

第二个例子是关于检查数字是偶数或非偶数:

#regular function
def is_even(x): if x % 2 == 0: return True else: return False # lambda function
even = lambda x: x % 2 == 0# results
print('is_even(4): {}'.format(is_even(4)))
print('is_even(3): {}'.format(is_even(3)))
print('even(4): {}'.format(even(4)))
print('even(3): {}'.format(even(3)))>>> is_even(4): True
>>> is_even(3): False
>>> even(4): True
>>> even(3): False 

再一次,同样的逻辑以两种方式实现。你来决定你喜欢哪一个吧。

2、列表解析(List Comprehensions)

简单来说,列表解析使我们可以使用其他符号创建列表。可以将其视为括号内的单行循环。

在做特征工程时,使用列表解析很方便。例如,假设我们在通过分析电子邮件标题来进行垃圾邮件检测,那么我们会想弄明白是否问号会在垃圾邮件中经常出现。如果用列表解析来实现的话,这将是一项非常简单的任务。

就不再进行更多的理论解释了。例子才是最重要的。

这里的例子选择声明一个常规函数,该函数将检查列表中以某个字符(在这种情况下为“ a”)开头的项目。实施后,再用列表解析执行相同的操作。猜猜哪个会写起来更快呢?

lst =['Acer', 'Asus', 'Lenovo', 'HP']# regular function
def starts_with_a(lst): valids = [] for word in lst: if word[0].lower() == 'a': valids.append(word) return valids # list comprehension
lst_comp = [word for word in lst if word[0].lower() == 'a']# results
print('starts_with_a: {}'.format(starts_with_a(lst)))
print('list_comprehension: {}'.format(lst_comp))>>> starts_with_a:['Acer', 'Asus']
>>> list_comprehension: ['Acer', 'Asus'] 

如果是第一次看到这样的方式,语法可能会有点混乱。但是当你每天都在写这样的函数时,它们会越来越吸引你,看你能把多少复杂的东西应用进去。

3、Zip函数

这是在实践中很少看到的内置python方法之一。从数据科学家的角度来看,它使我们能够同时迭代两个或多个列表。在处理日期和时间时,这可以派上用场。

例如,有一个属性表示某个事件的开始时间,而第二个属性表示该事件的结束时间时,为了进一步分析,几乎总是需要计算它们之间的时间差。而到目前为止,zip函数是最简单的方法。

例如,来比较一些虚构公司和虚构地区的一周销售日期:

sales_north= [350, 287, 550, 891, 241, 653, 882]
sales_south = [551, 254, 901, 776, 105, 502, 976]for s1, s2 in zip(sales_north,sales_south): print(s1 — s2)>>> -201 33 -351 115 136 151 -94 

看看这有多么简单吧。可以应用相同的逻辑同时迭代3个数组,只需要在括号中添加“ s3”和其他一些列表名称即可。

结语

Pure Python真的非常强大。了解其功能后,就不再需要专门的库来存放所有内容了。这将帮助你成为一名更好的程序员。

练习这些技能、掌握它们,并将其应用到日常工作中。无论是仅仅为了娱乐、完成学业还是工作,你都不会后悔的。

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期科技领域知识)

歌谣带你看java面试题

第一百一十六期:不能错过!你必须知道的3种重要Python技能相关推荐

  1. 第一百一十九期:支付宝历年双十一背后的技术揭秘

    和过去10年一样,2019年天猫双11又创造了一个全新的纪录.这个数字背后,是数代支付宝工程师们殚精竭虑.不断突破技术难关. 作者:蚂蚁金服科技 自从有了双十一这个电商节日,很多技术人的生命轨迹都改变 ...

  2. 第一百一十四期:盘点十大最新Web UI测试工具

    本文为您盘点目前十大最新Web UI测试工具的各自优缺点,以方便您根据实际情况进行选择. 作者:陈峻 在过去的几年中,业界至少出现了十二种全新的UI测试自动化工具.虽然每一种工具都有各自的侧重点,但是 ...

  3. 第一百一十六节,JavaScript,DOM操作样式

    JavaScript,DOM操作样式 一.操作样式 CSS作为(X)HTML的辅助,可以增强页面的显示效果.但不是每个浏览器都能支持最新的CSS能力.CSS的能力和DOM级别密切相关,所以我们有必要检 ...

  4. 第一百一十八期:运行 JavaScript 代码片段的 20 种工具

    运行 JavaScript 代码片段的 20 种工具 前端日常开发中,我们使用喜爱的 IDE 调试 JavaScript 代码,比如我喜欢的代码编辑器有两个,Sublime Text 3 和 VS C ...

  5. 第一百一十五期:Web开发必须掌握的三个技术:Token、Cookie、Session

    在Web应用中,HTTP请求是无状态的.即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session. 作者:一颗小梪梪 在Web ...

  6. 无法从命令行或调试器启动服务.必须首先_十大Java面试问题-您必须知道的Java基础知识...

    问:什么是JRE,为什么需要它? JRE代表" Java运行时环境",您通常可以将其下载为Java软件.JRE由Java虚拟机,Java平台类和支持库组成.JRE是Java软件的运 ...

  7. 未雨绸缪,迎接运维新时代—— Tech Neo第十六期技术沙龙

    运维发展历程与工业革命异曲同工,工业的三次革命分别是机械化.电气化与信息化,运维则是原始手工.脚本与自动化工具.那么工业4.0悄然来临的今天,智能化又将会给运维带来哪些影响?坦白讲,AIOps是新概念 ...

  8. 鲁大师电动车智能化测评报告第十六期:破局者与搅局者之争

    鲁大师第十六期智能化电动车测评排行榜数据来源于鲁大师智慧实验室,测评的车型均为市面上主流品牌的主流车型.截止目前,鲁大师智能化电动车测评的车型高达80余种,且还在不断增加和丰富中. 1.测评依据 鲁大 ...

  9. android仿秒拍源码,你所不知道的程序员 程序员其实真的很…【Bus Weekly】三十六期...

    原标题:你所不知道的程序员 程序员其实真的很-[Bus Weekly]三十六期 快,点击蓝色"字体"关注这个公众号,一起涨姿势- 现如今,程序员在中国的科技 圈可以说已经达到了举足 ...

最新文章

  1. dba mysql命令_Mysql常用DBA命令
  2. errno_t open_s()打开文件出现的错误分析
  3. 转:Fedora 17安装后配置|rpmfusion源|Rhythmbox mp3 wma支持插件|smplayer
  4. python3操作MySQL:insert插入数据
  5. activiti 5.21工作流规则引擎扩展(businessRuleTask)
  6. Symfony2模版引擎使用说明手册
  7. 解决stackoverflow打开慢不能注册登录
  8. Android演示Stack(课下作业)
  9. 用户DSN、 系统DSN 、文件DSN
  10. Spring data Jpa,Mybatis,读写锁,@Lock 使用
  11. 读懂LinkedList这一篇就够了
  12. 个人健康管理系统1.0(微信小程序+java(ssm框架)+layui+爬虫+mysql)(新手学习之路,带源码,仅供学习)
  13. hbase基础操作命令
  14. C#学习笔记25: 控制台应用程序开发精讲
  15. oracle 2的22次方,22的2次方(2的22的2次方等于多少)
  16. 光电自动避障小车_凌鸟智能总结了一下激光导航反射板AGV小车的优缺点!
  17. 2018东北四省赛 Spell Boost DP
  18. 北航计算机学院吉祥物,北航软件学院吉祥物征集令
  19. ECharts之阶梯瀑布柱状图
  20. Automatic fall detection of human in video using combination of features译文

热门文章

  1. jquery miniui , 普加甘特图,流程管理
  2. STL源码剖析学习二:空间配置器(allocator)
  3. 推荐一个国外SaaS产品-Olark
  4. windows调用python_windows 快捷调用Python语言
  5. hide show vue 动画_(Vue动效)7.Vue中动画封装
  6. 麒麟810处理器_麒麟810性能实测:对比骁龙845骁龙730,谁更强?
  7. python 矩阵乘法 跳过nan_python – Numpy:当一些向量元素等于零时,矩阵向量乘法不会跳过计算吗?...
  8. 【电路补习笔记】6、MOS管的参数与选型
  9. Java 基础——数组解析
  10. 如何通过Maven的Jetty插件运行Web工程