Python效率工具

1 Faker生成假数据

你若还在为生成名字、地址、IP地址而发愁,试试Faker库吧。

它是专业生成假数据的神器,但生成的数据看起来又如此“不假”。

基本用法如下所示:

2 Pendulum管理时间

使用日期和时间格式从来都不是一件有趣的事情。

尽管内置的datetime模块做得相当不错,但有一个更直观的Pendulum,能做到快速处理。

它支持时区转换、日期、时间操作和格式设置。

如下是一个快速示例,快速创建1个上海时区的时间:

from datetime import datetimeimport pendulum    sh = pendulum.timezone('Asia/Shanghai')shc = pendulum.now()print('Current Date Time in sh =', shc)# DateTime(2021, 12, 9, 16, 38, 52, 599942, tzinfo=Timezone('Asia/Shanghai'))shc.add(years=1)# DateTime(2022, 12, 9, 16, 38, 52, 599942, tzinfo=Timezone('Asia/Shanghai'))

3 Scrapy 做爬虫

Scrapy是一个强大的工具,可以让你从 站上快速提取信息。

当需要从多个 站或 页中提取大量信息时,手动提取是低效的。

Scrapy提供了易于使用的方法和包,可以使用HTML标记或CSS类提取信息。通过以下命令安装scrapy:

pip install scrapy

然后直接在终端输入下面一行代码,

 scrapy fetch --nolog https://baidu.com

就能得到百度的首页html内容。

4 使用Pandas数据分析

Pandas是一个简单但功能强大的数据分析工具。使用它可以进行数据清洗,并对其进行统计分析。

分析完数据后,还可以使用外部库(如[Matplotlib])将其可视化(

https://github.com/matplotlib/matplotlib).

Pandas最棒的地方是它建在NumPy上面,NumPy是一个强大的数据分析工具,因为Pandas基于它,所以这意味着大多数NumPy方法都是Pandas中已有的函数。

5 click命令行工具

click是一个Python包,可用于创建命令行接口,相当漂亮的命令行,相当丝滑。

让我们看一个例子:

"""click 模块演示"""@click.command()@click.option('--count', default=3)@click.option('--name', prompt='输入你的名字:')def hello(count, name):    for x in range(count):        print(f"Hello {name}!")if __name__ == "__main__":    hello()

hello函数公开了两个参数:countname。最后,在命令行,直接这样调用脚本:

python click_hello.py --count=5

最后打印:

输入你的名字:: zhenguoHello zhenguo!Hello zhenguo!Hello zhenguo!Hello zhenguo!Hello zhenguo!

6 微web框架Flask

需要设置web服务器吗?

你有两秒钟的时间吗?因为这就是用Python启动简单web服务器所需的时间,直接下面一行代码:

python -m http.server 8000

但对于一个基本的web应用程序来说,这可能太简单了。Flask是一个用Python构建的微web框架。它是“微型”的,因为它没有任何数据库抽象层、表单验证或邮件支持。

幸运的是,它有大量的扩展,可以即插即用,如果只想提供一个简单的API,那么它就是完美的。

要使用Flask创建API服务器,请使用以下脚本:

from flask import Flaskfrom flask import jsonifyapp = Flask(__name__)@app.route('/')def root():    return jsonify(        app_name="zhenguo的小工具",        app_user="zhenguo"    )

使用下面一行代码启动服务:

FLASK_APP=flask.py flask run   

最后,当您在浏览器中访问URLhttp://127.0.0.1:5000/时,

应该会看到以下JSON:

{"app_name":"zhenguo的小工具","app_user":"zhenguo"}

7 API请求Requests

Requests是一个强大的HTTP库。有了它,可以自动化任何与HTTP请求相关的操作,包括API自动化调用,这样你就不必再手动进行调用。

它附带了一些有用的特性,如授权处理、JSON/XML解析和会话处理。

如下获取明文地址:北京市海淀区清华东路35 ,对应的经纬度时,使用百度地图接口,免费注册得到一个apk,返回经纬度结果如下所示:

import requestsimport rerep = requests.get(    'https://api.map.baidu.com/geocoding/v3/?address=北京市海淀区清华东路35 &output=json&ak=你的apk&callback=showLocation')print(re.findall(r'"lng":(.*),"lat":(.*?)}', rep.text))# 结果显示    [('116.35194130702107', '40.00664192889596')]

8 自动化测试Selenium

Selenium是一个编写自动化测试用例的测试框架。

尽管它是用Java编写的,Python包提供对几乎所有Selenium函数的类似API的访问。

Selenium通常用于自动化应用程序UI的测试,但您也可以使用它自动化机器上的任务,如打开浏览器、拖放文件等。

看一个快速示例,演示如何打开浏览器并访问百度主页:

from selenium import webdriver import time       browser = webdriver.Chrome(executable_path ="C:Program Files (x86)GoogleChromechromedriver.exe")       website_URL ="https://baidu.com/"brower.get(website_URL)     refreshrate = int(15)       # 一直保持运行while True:     time.sleep(refreshrate)     browser.refresh() 

现在,该脚本每15秒刷新浏览器中的百度主页。

9 图像处理Pillow

很多时候,需要以某种方式修改图像,使其更适合,例如模糊细节、组合一个或多个图像或创建缩略图。

将自制的Pillow脚本与Click组合在一起,然后直接从命令行访问它们,这对于加快重复的图像处理任务非常有用。

看一个模糊图像的快速示例:

from PIL import Image, ImageFilter    try:    original = Image.open("python-logo.png")        # Blur the image    blurred = original.filter(ImageFilter.BLUR)        # Display both images    original.show()    blurred.show()        blurred.save("blurred.png")    except:    print('未能加载图像')

Python数据可视化库

Matplotlib

两个直方图(matplotlib)

matplotlib是Python数据可视化库中的泰斗。尽管它已有十多年的历史,但它仍是Python使用者最广泛使用的绘画库。其设计与20世纪80年代开发的一种专有编程语言—-MATLAB非常相似。

因为matplotlib是第一个Python数据可视化库,所以很多其它的库都是以其为基础构建的,亦或者在分析期间与其协同合作的。一些库,如pandas和Seaborn,都是对matplotlib的“包装器”,使我们能够用更少的代码以多种方式访问matplotlib。

尽管matplotlib有助于了解数据,但它对于快速、轻松地创建可发布的图表用处不大。正如Chris Moffitt在他的Python可视化工具的概述中所称,matplotlib“功能非常强大,但同时也很复杂”。

Matplotlib一直以来因其有着独特的90年代气息的默认风格饱受诟病。即将发布的matplotlib 2.0承诺会有很多新的风格来解决这个问题。

开发者:John D. Hunter

更多资料:matplotlib.org

Seaborn

Seaborn利用matplotlib的强大功能,几行代码就能创建漂亮的图表。其与matplotlib主要的区别是Seaborn的默认样式以及更美观、更现代的调色板设计。因为Seaborn建立在matplotlib之上,所以你需要了解matplotlib来调整Seaborn 的默认值。

开发者: Michael Waskom

更多资料:

http://web.stanford.edu/~mwaskom/software/seaborn/index.html

ggplot

ggplot 是由基于R语言的绘图系统—ggplot2建立的,也是《图形语法》(The Grammar of Graphics)中的概念。Ggplot的操作与matplotlib不同:它允许你对组件进行分层以创建完整的绘图。例如,你可以从坐标轴开始,然后添加点,再添加线、趋势线等。尽管图形语法被誉为绘图的“直观”方法,但经验丰富的matplotlib用户可能需要时间来适应这种新的思维模式。

据创造者所说,ggplot不是为创建高度定制的图形而设计的。它为更简单的绘图方法牺牲了复杂性。

ggplot与pandas紧密集成,因此在使用ggplot时,最好将数据存储在数据帧中。

开发者: ?hat

更多资料:http://ggplot.yhathq.com/

Bokeh

三个城市的交互式天气统计(连续分析)

和ggplot一样,Boken也是《图形语法》(The Grammar of Graphics)中的概念,但与ggplot不同的是,它完全基于Python,不是从R语言移植过来的。其优势在于能够创建交互式的、可直接用于 络的绘图,这些绘图可以很容易地输出为JSON 对象,HTML文档或交互式web应用程序。Bokeh还支持流媒体和实时数据。

Bokeh提供了三个具有不同控制级别的接口,以适应不同的用户类型。最高级别是快速创建图表。它包括创建常见图表的方法,如条形图、方框图和柱状图。中间层与matplotlib具有相同的特性,允许你控制每个图表的基本构建块(例如散点图中的点)。最底层面向开发人员和软件工程师。它没有预先设置的默认值,并且要求你定义图表的每个元素。

开发者:Continuum Analytics

更多资料:

http://bokeh.pydata.org/en/latest/

Pygal

方框图

与Bokeh和Plotly一样,pygal提供了可以嵌入到Web浏览器中的交互式绘图。其主要区别在于能够将图表输出为SVG格式。只要你在处理较小的数据集,SVG就可以帮你做得很好。但是,如果你制作的图表中有数十万个数据点,它们将很难呈现,并且会变得迟钝。

由于每种图表类型都被包装成一个方法,并且内置的样式很漂亮,所以用几行代码就可以很容易地创建一个美观的图表。

开发者:Florian Mounier

更多资料:

http://www.pygal.org/en/latest/index.html

Plotly

折线图(Plotly)

你可能知道Plotly是一个用于数据可视化的在线平台,但你是否也知道可以从Python notebook 访问它的功能?和Bokeh 一样,Plotly的专长是制作交互式绘图,但它提供了一些在大多数库中找不到的图表,如等高线图,树状图和三维图表。

开发者: Plotly

更多资料:https://plot.ly/python/

Geoplotlib

等值线图 (Andrea Cuttone)

geoplotlib是用于创建地图和绘制地理数据的工具箱。你可以用它来创建各种各样的地图类型,比如等值线图、热图和点密度地图。必须安装pyglet(一个面向对象编程接口),才能使用geoplotlib。尽管如此,由于大多数Python数据可视化库都不提供地图,所以最好有一个专门针对它们的库。

开发者:Andrea Cuttone

更多资料:

https://github.com/andrea-cuttone/geoplotlib

Gleam

趋势线散点图(David Robinson)

Gleam的灵感来自R语言的Shiny包。它允许你只使用Python脚本就可以将分析转化为交互式web应用程序,所以你不必了解任何其他语言,如HTML,CSS或JavaScript。Gleam可以使用任何Python数据可视化库。一旦创建了一个绘图,就可以在上面构建字段,这样用户就可以过滤和排序数据。

开发者:David Robinson

更多资料:

https://github.com/dgrtwo/gleam

Missingno

无效矩阵(Aleksey Bilogur)

处理丢失的数据是一件痛苦的事。missingno允许你通过直观的总结快速衡量数据集的完整性,而不是艰难地浏览表格。你可以根据热图或树形图中的完成度或点相关来过滤和排序数据。

开发者:Aleksey Bilogur

更多资料:

https://github.com/ResidentMario/missingno

Leather

带有一致比例的 格图 (Christopher Groskopf)

Leather的创建者Christopher Groskopf说的好:“Leather是一个为那些现在需要图表而不在乎是否完美的人设计的Python图表库”它可用于处理所有数据类型,然后生成SVG图像,这样你在调整图像大小时就不会损失图像质量。由于这个库相对较新,一些文档仍在编写中。你可以做的图表很基础,但这就是目的。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月2日
下一篇 2022年7月2日

相关推荐