如果您想学习Python(或者最近开始学习Python),则可能会问自己:
“我到底可以使用Python做什么?”
嗯,这是一个棘手的问题,因为Python有很多应用程序。
但是随着时间的推移,我发现Python有3种主要的流行应用程序:
- Web开发
- 数据科学-包括机器学习,数据分析和数据可视化
- 脚本编写
让我们依次讨论它们。
Web开发
最近,基于Python的Web框架(如Django和Flask)在Web开发中非常流行。
这些Web框架可帮助您使用Python创建服务器端代码(后端代码)。 那是在服务器上运行的代码,而不是在用户的设备和浏览器上运行的代码(前端代码)。 如果您不熟悉后端代码和前端代码之间的区别,请参见下面的脚注。
但是,等等,为什么我需要一个Web框架?
这是因为Web框架使构建通用后端逻辑变得更加容易。 这包括将不同的URL映射到Python代码块,处理数据库以及生成用户在浏览器中看到的HTML文件。
我应该使用哪个Python网络框架?
Django和Flask是两个最受欢迎的Python网络框架。 如果您刚刚入门,建议您使用其中之一。
Django和Flask有什么区别?
Gareth Dwyer撰写了一篇有关此主题的出色文章,因此在这里引用一下:
主要对比:
- Flask提供了简单性,灵活性和细粒度的控制。 它是不受限制的(它使您可以决定如何实现事物)。
- Django提供了全方位的体验:即开即用地获得管理面板,数据库界面,ORM(对象关系映射)以及应用程序和项目的目录结构。
您可能应该选择:
- Flask,如果您专注于体验和学习机会,或者想要更多地控制要使用哪些组件(例如,要使用哪些数据库以及如何与之交互)。
- Django,如果您专注于最终产品。 特别是如果您正在开发简单的应用程序(例如新闻站点,电子商店或博客),并且希望始终有一种单一且显而易见的处理方式。
换句话说,如果您是初学者,则Flask可能是一个更好的选择,因为它需要处理的组件更少。 另外,如果您想进行更多定制,则Flask是更好的选择。
另外,据我的数据工程师朋友Jonathan T Ho称,由于其灵活性,Flask比Django更适合创建称为REST API的东西。
另一方面,如果您想直接构建一些东西,Django可能会让您更快地到达那里。
好吧,让我们转到下一个主题!
数据科学-包括机器学习,数据分析和数据可视化
首先,让我们回顾一下什么是机器学习。
我认为解释什么是机器学习的最好方法是给您一个简单的例子。
假设您要开发一个程序来自动检测图片中的内容。
因此,鉴于下面这张图片(图片1),您希望您的程序认识到它是一只狗。

鉴于下面的其他内容(图2),您希望程序识别出它是一个表。

您可能会说,嗯,我可以编写一些代码来做到这一点。 例如,如果图片中有很多浅棕色像素,那么我们可以说它是一只狗。
或者,您可以找出如何检测图片中的边缘。 然后,您可能会说,如果有很多直边,那就是一张桌子。
但是,这种方法很快就会变得棘手。 如果图片中有只白狗没有棕色头发怎么办? 如果图片仅显示桌子的圆形部分怎么办?
这就是机器学习的用武之地。
机器学习通常实现一种算法,该算法可自动检测给定输入中的模式。
例如,您可以将1,000张狗的照片和1,000张桌子的照片提供给机器学习算法。 然后,它将了解狗和桌子之间的区别。 当给它一张新的狗或桌子的图片时,它将能够识别出它是哪只。
我认为这有点类似于婴儿学习新事物的方式。 婴儿如何学会一件事看起来像狗,而另一件事看起来像桌子? 大概有很多例子。
您可能没有明确告诉婴儿:“如果毛茸茸且头发浅棕色,则可能是狗。”
您可能会说:“那是一条狗。 这也是一条狗。 这是一张桌子。 那也是一张桌子。”
机器学习算法的工作方式大致相同。
您可以将相同的想法应用于:
- 推荐系统(例如YouTube,Amazon和Netflix)
- 人脸识别
- 语音识别
在其他应用程序中。
您可能听说过的流行机器学习算法包括:
- 神经网络
- 深度学习
- 支持向量机
- 随机森林
您可以使用以上任何一种算法来解决我之前解释的图片标记问题。
适用于机器学习的Python
有流行的Python机器学习库和框架。
最受欢迎的两个是scikit-learn和TensorFlow 。
- scikit-learn内置了一些更流行的机器学习算法。 我在上面提到了其中一些。
- TensorFlow更像是一个低级库,可让您构建自定义机器学习算法。
如果您刚开始使用机器学习项目,我建议您首先从scikit-learn开始。 如果您开始遇到效率问题,那么我将开始研究TensorFlow。
我应该如何学习机器学习?
要学习机器学习基础知识,我会推荐斯坦福大学或加州理工学院的机器学习课程。
请注意,您需要微积分和线性代数的基本知识才能理解这些课程中的某些材料。
然后,我将与Kaggle一起练习您从其中一门课程中学到的知识。 在这个网站上,人们可以竞争为给定的问题构建最佳的机器学习算法。 他们也为初学者提供了不错的教程。
数据分析和数据可视化如何?
为了帮助您理解这些内容,我在这里给您一个简单的例子。
假设您在一家在线销售某些产品的公司工作。
然后,作为数据分析师,您可以绘制一个条形图。

从该图可以看出,在这个特定的星期日,男性购买了400多种这种产品,女性购买了大约350多种这种产品。
作为数据分析师,您可能会针对这种差异提出一些可能的解释。
一个明显的可能解释是,与男性相比,该产品在男性中更受欢迎。 另一个可能的解释可能是样本数量太小,而这种差异是偶然造成的。 还有另一个可能的解释是,由于某种原因,男人倾向于只在星期日购买更多该产品。
为了理解这些解释中的哪一个是正确的,您可以绘制另一张这样的图表。

我们不仅仅显示星期日的数据,而是查看整整一周的数据。 如您所见,从该图可以看出,这一差异在不同的日子是相当一致的。
从这个小小的分析中,您可能会得出结论,对此差异最有说服力的解释是,与男性相比,该产品更受男性欢迎。
另一方面,如果您看到类似这样的图怎么办?

那么,什么解释周日的差异呢?
您可能会说,也许出于某种原因,男人往往只会在星期日购买更多这种产品。 或者,也许是偶然的,人们在星期天买了更多。
因此,这是数据分析在现实世界中可能看起来像的简化示例。
我在Google和Microsoft工作时所做的数据分析工作与该示例非常相似,只是更为复杂。 实际上,我在Google上使用Python进行了这种分析,而在Microsoft上使用了JavaScript。
我在两家公司都使用SQL从数据库中提取数据。 然后,我将使用Python和Matplotlib(在Google)或JavaScript和D3.js(在Microsoft)来可视化和分析这些数据。
使用Python进行数据分析/可视化
Matplotlib是用于数据可视化的最受欢迎的库之一。
这是一个很好的入门库,因为:
- 很容易上手
- 诸如seaborn之类的其他一些库也以此为基础。 因此,学习Matplotlib将有助于您稍后学习这些其他库。
如何使用Python学习数据分析/可视化?
您首先应该学习数据分析和可视化的基础知识。 当我在网上寻找良好的资源时,找不到任何资源。 因此,我最终制作了有关此主题的YouTube视频:
我还最终完成了关于Pluralsight上有关此主题的完整课程,您可以通过注册他们的10天免费试用版来免费学习。
我建议他们两个。
在学习了数据分析和可视化的基础知识之后,从Coursera和Khan Academy等网站学习统计基础知识也将有所帮助。
脚本编写
什么是脚本?
脚本通常指编写旨在自动化简单任务的小型程序。
因此,让我从我的个人经历中为您举例。
我曾经在日本的一家小型初创公司工作,那里有一个电子邮件支持系统。 这是我们用来回答客户通过电子邮件发送给我们的问题的系统。
当我在那里工作时,我的任务是计算包含某些关键字的电子邮件的数量,以便我们可以分析收到的电子邮件。
我们本可以手动完成的,但是我写了一个简单的程序/简单的脚本来自动完成此任务。
实际上,我们当时使用Ruby来完成此工作,但是Python还是执行此类任务的好语言。 Python适用于此类任务,主要是因为它具有相对简单的语法并且易于编写。 用它编写一些小的东西并对其进行测试也很快。
嵌入式应用程序呢?
我不是嵌入式应用程序专家,但是我知道Python可与Rasberry Pi一起使用。 它似乎在硬件爱好者中很流行。
那游戏呢?
您可以使用名为PyGame的库来开发游戏,但它不是那里最受欢迎的游戏引擎。 您可以使用它来构建一个爱好项目,但是如果您对游戏开发很认真,我个人不会选择它。
相反,我建议使用Unity C#(这是最受欢迎的游戏引擎之一)入门。 它允许您为许多平台构建游戏,包括Mac,Windows,iOS和Android。
桌面应用程序呢?
您可以使用Tkinter用Python制作一个,但这似乎也不是最受欢迎的选择。
相反,似乎Java,C#和C ++之类的语言对此更受欢迎。
最近,一些公司也开始使用JavaScript创建桌面应用程序。
例如,Slack的桌面应用程序是用称为Electron的东西构建的。 它允许您使用JavaScript构建桌面应用程序。
就个人而言,如果要构建桌面应用程序,则可以使用JavaScript选项。 如果有的话,它允许您重用Web版本中的某些代码。
但是,我也不是桌面应用程序方面的专家,因此如果您不同意或同意我,请在评论中告知我。
Python 3还是Python 2?
我建议使用Python 3,因为它更现代,并且是目前比较流行的选择。
脚注:关于后端代码与前端代码的注释(以防您不熟悉这些术语):
假设您想制作类似Instagram的产品。
然后,您需要为要支持的每种类型的设备创建前端代码。
您可能使用例如:
- 适用于iOS的Swift
- 适用于Android的Java
- Web浏览器的JavaScript
每组代码将在每种类型的设备/浏览器上运行。 这将是一组代码,用于确定应用程序的布局,单击时的按钮外观等。
但是,您仍然需要能够存储用户的信息和照片。 您将希望将它们存储在服务器上,而不仅仅是存储在用户的设备上,以便每个用户的关注者都可以查看他/她的照片。
这是后端代码/服务器端代码的来源。您需要编写一些后端代码来执行以下操作:
- 跟踪谁在关注谁
- 压缩照片,以免占用太多存储空间
- 在发现功能中将照片和新帐户推荐给每个用户
因此,这就是后端代码和前端代码之间的区别。
顺便说一句,Python并不是编写后端/服务器端代码的唯一好选择。 还有许多其他流行的选择,包括基于JavaScript的Node.js。
喜欢这篇文章吗? 然后,您可能也喜欢我的YouTube频道。
我有一个名为CS Dojo的编程教育YouTube频道,有440,000多名订阅者,在这里我可以产生更多类似本文的内容。
例如,您可能喜欢这些视频: