Category: Python

0

十个最佳数据科学相关的Python库

我们都知道Python很流行也很易学, 本文将列出十个最佳的数据科学相关的Python库。希望对你能有所帮助。 NumPy NumPy十个主要用于数据分析,科学计算以及数据科学的库。NumPy支持多维的数组和矩阵。他是数据科学中的最基础的库之一。NumPy也被TensorFlow内部使用,并且被很多别的库所使用。很多时候,NumPy更像一个同样的Python库一样。 Pandas Pandas是另外一个Python库,它专精于数据的整理和合并。它可以方便快捷来进行数据的整理,合并和数据图形化显示。Pandas常被用来从一个CSV文件中创建数据框架。 Matplotlib Matplotlib在数据可视化中非常有用。它提供了很多种有效显示数据的方法。你可以使用它来很快速地画出曲线图,饼图,直方图以及各种各样的专业图形。你可以自定义图表中的任何部分。 Scikit-Learn Scikit-Learn是针对经典的ML算法的最动态和广泛的库之一。它是基于两个库来实现的,一个就是我们上文提到的NumPy,另外一个Scipy。它可以为大多数监督和非监督算法提供支持。这个库也可以用于数据挖掘,数据收集以及数据分析,所以它对很多ML的初学者来说也很有用。 TensorFlow TensorFlow不需要多说吧,他是一个用于机器学习应用的库,你可以实现神经网络等等各种算法。它是目前为止最流行的机器学习的库,虽然不是第一个,但自从它出现后,很快就迅速超过了所有其他的库。 Keras Keras是一个强大的Python机器学习库。它是一个高级的神经网络API,可以运行在TensorFlow,CNTK或者Theano之上。它可以独立地在GPU或者CPU上运行。对于新手来说,使用Keras非常方便和快捷。 Scrapy Scrapy是一个用于进行网络抓取的Python框架。它主要用于提取,保存和处理大量的网络数据。我们可以使用它来很方便地处理大量的数据。 Seaborn Seaborn其实是基于Matplotlib创建一个数据可视化的库。你可以使用它来整理信息性和统计性的视觉效果以及说明性图表。Seaborn是的数据可视化成为数据探索和分析不可或缺的一部分。它这个库非常适合测试多个变量之间的关系。 SciPy SciPy是一个包含各种线性代数,数学计算,优化和统计模块的库。开发者可以使用它来进行傅里叶变换,ODE求解,信号和图像处理等。 Plotly Plotly是一个开源的绘图库,它支持超过40中图形类型,基本涵盖了所有的分析,经济,地理,科学和三维用例等等各个方面。 总结 总得来说,了解上面十个Python库是你学习数据分析的重要武器,希望你们能够喜欢。

0

使用Python实现一个读书内容提醒

我们通常会发现很难记住我们曾经读过的东西,就像上图所示,随着时间的推移,所读的东西会渐渐忘记,只有不断的复习,才能够真正地把它们记住。有时,我也想不停地去复习他们,但是总是会忘记这件事,要是能有一个系统不断地提醒我做这件事就好了。我想我所遇到的这个问题,应该也是大家平常会遇到的。 其实市面上,也有一些网站可以实现这个功能,比如readwise.io,它就会每天给你发送提醒的邮件。那么我就在想,我们能不能自己也做 一个呢?想到就做吧,正好最近也在学习Python,那就让我们一起来试试看能不能实现这个功能。 首先来看看我们要实现的功能: 从你的数据集中找到笔记和突出显示的内容 把相关的笔记发送到一个指定的邮箱 按照用户定义的时间来发送邮件 首先,我们需要一些数据,这个只能是手动来做了。我使用的是一个PDF软件,他可以得到所有的注释。我把他们简单放到一个excel中,然后在转成Json,下面是一个Json的片段: 下面,我们来创建几个文件来处理相关的操作: Database.py 这个文件非常简单,他使用read_json_data函数加载了保存在本地的数据。这样,我们就可以使用这些数据了 Selector_service.py 这个文件首先我使用我们上面实现的read_json_data来加载数据,并赋值给self.raw_response。这里我们会随机选择三个内容,并把他们保存在self.sampled_object中。对于选中的内容,我们把他们的选中次数增加,以后就可以根据这个选择次数来有权重地进行随机选择。 Parse_content.py 这个类,就是分析我们上面得到的随机的entry,然后把他们存储在一个self.sample_entries中,并通过parse_selected_entries方法来解析他们。我们主要用这个方法来解析选中的entry,然后转成后面email发送的格式。 Mail_service.py MailService就是通过上面的parse_selected_entries得到内容,并把他们存储到self.content中。define_email_parameters就是设置email相关的参数,比如邮件的名字,从谁发的,以及发给谁等等。 这两个方法都是通过run_mailer来调用的,这个应用是通过最下面的run_job函数来开始的。下面就是email发出来的内容: 好了,这样你就可以实现email的发送了。下面唯一一个还要做的事情就是怎样来调用mail_service.py,我们需要一个定时调用这个实现,这里我们使用Cron,它是一个一直运行得process,然后会在特定的时间调用特定的任务,在你的Crontab中加入下面的代码吧: 这段代码的简单解释如下,他会在每天7PM跑一次。具体的参数可以参见https://crontab.guru/ 好了,现在所有的功能就都实现了,下面还有一些内容就交给你来实现了: 现在准备数据是手动的,你可以通过Python来实现自动的解析,或者试下一个web界面,让你自己假如相关的内容,再通过API读取出来等等。 Email的内容其实不是很好,你可以用HTML来实现。 使用has_been_chosen_before 来更好的随机选择内容。 使用NLP来解析这些内容,然后生成一些总结后者概述之类的。 其它你想到的内容 参考文章:https://hackernoon.com/get-the-most-out-of-everything-you-read-using-python-kw1o3uiz

0

Python教程之创建多进程

现在很多CPU都支持多核,甚至是手机都已经开始支持多核了。而Python的GIL(Global Interpreter Locko)则使得其没法使用这些多核带来的优势。还好从Python2.6开始,引入了multiprocessing模块,我们终于可以使用多核带来的便利了。 本文,你会学习到下面这些内容: 使用多进程的优点 使用多进程的缺点 使用multiprocessing来创建多进程 Process的子类化 创建进程池 本文并不是一个multiprocessing的全面的介绍,假如你想全面的了解他,可以参见官方的文档: https://docs.python.org/2/library/multiprocessing.html 下面让我们开始吧! 使用多进程的优点 使用多进程有很多优点: 多进程使用独立的内存空间 相比于线程,代码更加直观 能够使用多个CPU/多核 避免GIL 子进程可以被kill(和thread不同) multiprocessing有和threading.Thread类似的接口 对CPU绑定的进程比较好(加密,二进制搜索,矩阵乘法等) 下面我们来看看使用多进程有什么缺点: 使用多进程的缺点 使用多进程也有一些缺点: 进程间通信更加复杂 内存的占用大于线程 使用multiprocessing来创建进程 multiprocessing是用来模拟threading.Thread类工作的。下面就是一个使用它的例子: 首先第一步需要import multiprocessing模块,另外两个import分别是为random和time服务的。 worker函数就是用来假装做一些事情,传入一个name的参数,没有什么返回,他首先打印name的值,然后随机sleep一段时间用来模拟做一段很长时间的工作,最后打印work finish。 紧接着,你使用multiprocessing.Process创建了5个进程,他的使用和threading.Tread()比较类似,你告诉Process哪个目标函数需要调用,以及会传入什么参数给他们,然后你调用了start函数来启动进程。另外你会把这些进程加入到一个list中。 最后,你遍历这个list,调用join方法,这个方法其实就是告诉Python等到进程结束。...

0

使用Python实现一个简单的聊天室

Python是一个非常灵活的编程语言,我们现在到处可见用Python编写的应用程序。本文就是一个很简单的使用Python来编写的一个机遇命令行的聊天室,他非常简单和易于理解。让我们开始吧。 聊天室是什么? 聊天室就是一个媒介或者接口,允许两个或多个用户聊天或者发送信息。它既可以是一对一的聊天也可以是群聊。我们这个例子中,将会创建一个群聊天室,他可以同时支持多于两个人在线。 架构 对聊天室,我们使用服务器-客户端的架构。这就意味着一台服务器将托管多台客户机器。 准备开始: 在深入代码之前,我们需要知道的最后一件事就是,我们需要些两个script,一个是server端的,一个是client端的。我们需要很清晰地知道,client端是只和server端通信。client之间是没有通信的。下面,我们来看具体的代码。 服务器端的代码: 首先, 我们需要import两个库,一个是”socket”一个是”threading”。这两个都是内建的库,所以不需要额外进行安装。只要import他们就可以了。Socket是用来连接网络中的多个节点,并进行通信的。Threading模块提供了很简单直观的接口可以在程序中产生多个线程。下面我们来定义我们的IP和端口。这里我们只能使用没有被保留的端口,因为我们是在本地机器上测试的,假如使用了保留的端口,那么会有很多意想不到的问题。 当我们开始定义socket的时候,有两个参数(AF_INET)和(SOCK_STREAM)会被使用到。第一个表示使用internet socket另一个表示使用TCP。下面我们就来实现广播的功能。他的基本功能就是把信息发送给所有的在client列表中的客户端。这个功能还不止会用在这里,我们还会在别的地方使用他。处理客户端是非常麻烦的事情,这个也是这样。他首先会试一下能否成client端接收到信息,假如可以的话,他才会广播。 假如这里有任何的错误或者问题的话,我们这里就简单处理一下,直接把client移除了。我们已经做了很多工作,但是添加客户端到目前为止还没有实现。所以,下面我们就来实现它。在接收端,这个关键字“NICKNAME”会被发送给客户端,这也意味着我们需要他们的名称。然后,我们收到他们的nickname之后,就可以把他们加入到客户端列表了。 这个循环是一直运行得,所以多个客户端可以同时加入到服务器中来。你所需要做的就是,让他有正确的IP和端口。 代码: 客户端代码: 这是第二段代码,我们为客户端实现写的代码。这个代码足够我们创建多个client而没有问题。我们还是从import socket和threading开始。在初始化socket之后,我们需要把它连接到对应的IP和端口。他们需要和服务器端的一样,这样才能工作。 现在我们可以连接服务器端了,你还记得server端会发要求来输入nickname吧,客户端接收到这个,发送nickname给服务端,他就可以进入聊天室了。假如没有接收到这个请求,那么连接就断了。现在我们连接到服务端了,还等什么?开始聊天吧。 我们写了一个write的函数来管理message的发送。假如你想知道怎么接收信息,还记得我们import的threading吗?这里我们需要两个thread来处理,就成功了。 你可能会发现我们在发送message之前,把它编码成ASCII了,这是因为我们发送的message是byte的格式,而不是string的格式。所以,记住,发送前编码,接收到后需要解码哦。 代码: 测试结果: 记住,服务器端代码要先运行,然后多个客户端可以加入。这个可以在命令行运行。但是我们需要不同的终端来分别运行他们。 这就是所有的代码了,希望你会喜欢他。 原文地址:https://hackernoon.com/creating-command-line-based-chat-room-using-python-oxu3u33