python爬虫教程,优化Python编程的4个妙招

商业认知 0 383

老铁们,大家好,在我真正了解 python爬虫教程 之前,也和大多数人一样,觉得它很复杂、很难懂。但真正深入了解后才发现其实并不难,今天我就以一个过来人的身份,讲讲 python爬虫教程 和 优化Python编程的4个妙招,希望大家都能轻松看懂。

本文目录

python爬虫教程,优化Python编程的4个妙招

  1. 优化Python编程的4个妙招
  2. 满满干货!20个Python使用的小技巧
  3. Python编程常用技巧
  4. Python 开发中有哪些高级技巧

优化Python编程的4个妙招

1. Pandas.apply()–特征工程瑰宝

Pandas库已经非常优化了,但是大部分人都没有发挥它的最大作用。想想它一般会用于数据科学项目中的哪些地方。一般首先能想到的就是特征工程,即用已有特征创造新特征。其中最高效的方法之一就是Pandas.apply(),即Pandas中的apply函数。

在Pandas.apply()中,可以传递用户定义功能并将其应用到Pandas Series的所有数据点中。这个函数是Pandas库最好的扩展功能之一,它能根据所需条件分隔数据。之后便能将其有效应用到数据处理任务中。

2. Pandas.DataFrame.loc– Python数据操作绝妙技巧

所有和数据处理打交道的数据科学家(差不多所有人了!)都应该学会这个方法。

很多时候,数据科学家需要根据一些条件更新数据集中某列的某些值。Pandas.DataFrame.loc就是此类问题最优的解决方法。

3. Python函数向量化

另一种解决缓慢循环的方法就是将函数向量化。这意味着新建函数会应用于输入列表,并返回结果数组。在Python中使用向量化能至少迭代两次,从而加速计算。

事实上,这样不仅能加速代码运算,还能让代码更加简洁清晰。

4. Python多重处理

多重处理能使系统同时支持一个以上的处理器。

此处将数据处理分成多个任务,让它们各自独立运行。处理庞大的数据集时,即使是apply函数也显得有些迟缓。

关于优化Python编程的4个妙招,青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容,可以点击本站的其他文章进行学习。

满满干货!20个Python使用的小技巧

本节对一些 Python易混淆的操作进行对比。

1.1有放回随机采样和无放回随机采样

1.2 lambda函数的参数

1.3 copy和 deepcopy

复制和变量别名结合在一起时,容易混淆:

对别名的修改会影响原变量,(浅)复制中的元素是原列表中元素的别名,而深层复制是递归地进行复制,对深层复制的修改不影响原变量。

1.4==和 is

1.5判断类型

1.6字符串搜索

1.7 List后向索引

这个只是习惯问题,前向索引时下标从0开始,如果反向索引也想从0开始可以使用~。

2.1读写 CSV文件

注意,当 CSV文件过大时会报错:_csv.Error: field larger than field limit(131072),通过修改上限解决

csv还可以读以分割的数据

2.2迭代器工具

itertools重新定义了很多迭代器工具,例如子序列工具:

序列排序:

多个序列合并:

2.3计数器

计数器可以统计一个可迭代对象中每个元素出现的次数。

2.4带默认值的 Dict

当访问不存在的 Key时,defaultdict会将其设置为某个默认值。

2.5有序 Dict

3.1输出错误和警告信息

向标准错误输出信息

输出警告信息

控制警告消息的输出

3.2代码中测试

有时为了调试,我们想在代码中加一些代码,通常是一些 print语句,可以写为:

一旦调试结束,通过在命令行执行-O选项,会忽略这部分代码:

3.3代码风格检查

使用 pylint可以进行不少的代码风格和语法检查,能在运行之前发现一些错误

3.4代码耗时

耗时测试

测试某代码块耗时

代码耗时优化的一些原则

4.1 argmin和 argmax

argmax同理。

4.2转置二维列表

4.3一维列表展开为二维列表

Python编程常用技巧

清理用户输入

对输入的的值进行清理处理,是常见的程序要求。比如要做大小写转化、要验证输入字符的注入,通常可以通过写正则用Regex来做专项任务。但是对于复杂的情况,可以用一些技巧,比如下面:

user_input="This

string has\tsome whitespaces...

"

character_map={

ord('

'):'',

ord('\t'):'',

ord('

'): None

}

在此示例中,可以看到空格字符"

"和"\t"都被替换为空格,而"

"被删除。

这是一个简单的示例,我们还可以使用unicodedata包和combinin()函数来生成大的映射表,以生成映射来替换字符串。

提示用户输入

命令行工具或脚本需要输入用户名和密码才能操作。要用这个功能,一个很有用的技巧是使用getpass模块:

import getpass

user= getpass.getuser()

password= getpass.getpass()

这三行代码就可以让我们优雅的交互提醒用户输入输入密码并捕获当前的系统用户和输入的密码,而且输入密码时候会自动屏蔽显示,以防止被人窃取。

查找字符串频率

如果需要使用查找类似于某些输入字符串的单词,可以使用difflib来实现:

import difflib

difflib.get_close_matches('appel', ['ape','apple','peach','puppy'], n=2)

#返回['apple','ape']

difflib.get_close_matches会查找相似度最匹配的字串。本例中,第一个参数与第二个参数匹配。提供可选参数n,该参数指定要返回的最大匹配数,以及参数cutoff(默认值为0.6)设置为thr确定匹配字符串的分数。

关于Python编程常用技巧,青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容,可以点击本站的其他文章进行学习。

Python 开发中有哪些高级技巧

我列出来几个,不知道算不算高级技巧,但是我个人觉得非常有用。

1.善用迭代器

迭代器在很多语言里面都有,而在 Python里适当的场景用迭代器会非常的“爽”。一来因为迭代器每次产生一个对象,适当使用能有效节省内存;二来它能达到部分“延迟计算”的效果。除此以外,因为 Generator(yield关键字)和 Generator Expression的存在,有时候使用迭代器能提升代码可读性。

举例,itertools.islice((calculate_for_value(v) for v in values), 0, 12)能够只在

[0, 12)范围内计算,而且是延迟计算的,即迭代到了那个对象才去计算。又如 any(i% 3== 0 for i in

numbers)能够找出 numbers里第一个能被 3整除的值,因为里面是个 Generator

Expression(迭代器的一种),所以找出以后 any函数就会立即返回,并不需要对整个 numbers列表计算 i% 3。

顺带推荐下这个库 erikrose/more-itertools,里面包含了很多实用的迭代器函数,是对标准库 itertools的一个很不错的补充。

2.善用描述符(Descriptor)

Python的描述符是对“属性”的抽象,一个描述符定义成类属性以后,能够控制这个类的实例上同名实例属性的 get、set、delete行为,比 __getattr__这样的实例级 magic method有更细的粒度,并且更容易复用。这个文档有简单的描述 Descriptor HowTo Guide,可见 Python的“实例方法”、@property全由它实现,一些第三方库也有用到(例如 SQLAlchemy的 Column、WTForms的 Field乃至 Python 3.4新增的 enum.Enum类型)。

利用描述符特性,可以在业务代码中实现一些非常方便的定制,例如可以自己实现一个能缓存返回值的 cached_property(也可以不用自己实现,直接用 Werkzeug的)。

3.尽量不要用反射技巧去 fight with language

我个人的一个观点:用一门编程语言就应该入乡随俗,fight with language的事情不要做太多为好。因为闭门造的轮子很难造圆,更何况站在语言使用者的层面去和语言的设计搏击实在很不自量力。

问题问的是“高级技巧”,那么对于一个动态语言,反射当然算高级技巧的。可是我见过一些利用 Python的反射来扫描出一些包中所有.py文件然后自动 import包下的所有模块的。且不说这个做法破坏了 Python“模块即是命名空间”和 lazy import的设定,光是从“正确性”来说就有一堆问题。这个做法仅仅考虑到了模块文件系统中的场景,没考虑到可能模块在一个 zip中的情况。就算再增强一下实现,考虑上 zip的 import,那 Python还有 PEP 302定义的 Import Hook用法呢,被这样一 hack就完全没法用了。这种 fight with language的做法很难去做到真正的“正确”。

所以我觉得还有一个 Python的技巧就是想使用“高级技巧”的时候谨慎地考虑使用。静下来想想自己是不是在 fight with language了,如果是的话,建议停手。要不就入乡随俗,要不就认真考虑一下 Python是不是真的有值得去改进的地方。后者是需要经过很多深思熟虑的,不是 10分钟的想法就够。如果后者的回答真的是“是”,我想可能正确的做法是写一个 PEP然后和社区讨论,看能否将改进直接施于 Python未来的版本之上,而不是在自己的代码里用一个看似高级技巧实是丑陋的 hack的实现来对抗语言本身。

-------------------------------------------------------------------------------

其他的一些 Python特色的技巧,例如 decorator、contextmanager等,因为各路 Python开发者基本都很熟悉,我就没列出来了。

-------------------------------------------------------------------------------

最后想说,只要这篇关于 python爬虫教程 和 优化Python编程的4个妙招 的内容帮到了你,我就心满意足,感谢支持,我们下次再会。

相关推荐: