2020-03-31 15:08发布
这是个棘手的问题,因为 Python 有很多用途。但是随着时间的推移,我发现 Python 主要可用于一下三个方面:
Web 开发
数据科学——包括机器学习、数据分析和数据可视化
脚本编写
我们就依次来看看吧。
像 Django 和 Flask 这样基于 Python 的 Web 框架最近在 web 开发中变得非常流行。
这些 web 框架帮助你用 Python 创建服务器端代码(后端代码)。这些代码在你的服务器上而不是在用户设备以及浏览器上(前端代码)运行。如果你不熟悉后端代码和前端代码之间的区别,请参阅下面脚注。
那是因为 web 框架让构建通用后端逻辑变得更简单了。这包括把不同的 URL 映射到 Python 代码块、处理数据库和生成用户在浏览器中看到的 HTML 文件。
Django 和 Flask 是两种最流行的 Python web 框架。如果刚刚开始学习,那么可以用它们中的任何一个。
Gareth Dwyer 有篇关于这个话题的文章(https://www.codementor.io/garethdwyer/flask-vs-django-why-flask-might-be-better-4xs7mdf8v)写得非常好,我在这里引用一下:
主要对比:
Flask 提供简洁、灵活和细粒度控制。它很是客观(让您决定如何实现想要的东西)。
Django 提供一种包罗万象的体验:您可以获得管理面板、数据库接口、ORM(object-relational mappling,对象关系映射),还有开箱即用的应用程序和项目的目录结构。
您应该选择:
Flask,如果您专注于体验和学习机会,或者您想对选用哪个组件有更大的控制权(例如您想使用哪个数据库和如何与它们交互)。
Django,如果你专注于最终的产品。特别是如果您正在做一个简单的应用程序(如一个新闻网站、电子商店,或者博客)并且希望有一个直接明了的做法。
换句话说,如果你是初学者,Flask 可能是个更好的选择,因为用到的组件比较少。如果想要更多的定制,那么 Flask 也是个更好的选择。
而且,根据我的数据工程师朋友的看法,Flask 更适合创建那些所谓的 REST API 的东西,因为它比 Django 更灵活。
另一方面,如果想构建一些简单的东西,Django 可以更快地达到目标。
好,我们接着谈谈下一个!
首先,我们来回顾一下什么是机器学习。
我认为,解释什么是机器学习的最好方法莫过于举个例子。
假设你想开发一个程序用于自动检测图片中的内容。
因此,对于下面的这张图片(图片 1),你希望程序能识别出这是条狗。
图 1
而对于下面的这张图片(图片 2),你希望程序能识别出它是张桌子。
图 2
你也许会说,我可以用几行代码搞定。例如,如果在图片上有很多淡棕色的像素,那么我们可以说那是狗。
或者,你可以找到在照片中检测边缘的方法。然后,你也许会说,如果有很多直边,那么那就是一张桌子。
但是,这种方法很快就遇到麻烦了。如果图片上是条没有棕色毛发的白狗怎么办?如果图片上显示的只是桌子的圆形部分呢?
轮到机器学习大显身手了。
机器学习可实现一些算法,能自动检测给定输入中的模式。
比如,你给机器学习的算法提供 1000 张狗的照片和 1000 张桌子的照片。那么,它将会学习区别狗和桌子。当您给出一张狗或桌子的新图片时,它将能够识别出是狗还是桌子。
我认为,这和婴儿学习新事物有点类似。婴儿是如何知道一样东西看起来像狗,而另一样东西看起来像桌子呢?可能就是从大量的例子中学到的。
你也许不会明确地告诉一个婴儿:“如果一样东西是毛茸茸的,并且有着淡棕色的毛发,那么它可能是条狗。”
你可能只是说:“那是条狗。这也是条狗。这是桌子。那也是桌子。”
机器学习算法的工作方式大致相同。
你可以把同样的想法应用于:
推荐系统(像 YouTube、Amazon 和 Netflix 在用的)
面部识别
声音识别
你可能听说过的流行的机器学习算法包括:
神经网络
深度学习
支持向量机
随机森林
你可以使用任何一个上述算法来解决我刚才解释过的图片标注问题。
有一些流行的 Python 机器学习库和框架,其中最流行的两个是 scikit-learn 和 TensorFlow。
scikit-learn 附带了一些更流行的内置机器学习算法。我刚才提到了其中的几个。
TensorFlow 更像是个低级库,它允许构建自定义机器学习算法。
如果你刚开始一个机器学习项目,那么我建议先用 scikit-learn。如果你开始遇到效率问题,那么我建议用 TensorFlow。
要学习机器学习基础知识的话,我建议选择斯坦福或加州理工学院的机器学习课程。
请注意,你需要微积分和线性代数的基本知识以理解这些课程中的某些内容。
然后,我会用 Kaggle 来练习从课程中学到的知识。Kaggle 是个网站,大家在这个网站上比试谁能对一个给定的问题构建出最佳的机器学习算法。网站上也有给初学者用的好教程。
为了帮助理解,我在这里举个简单的例子。假设你为一家在线销售产品的公司工作。
那么,作为数据分析师,你也许会画一个类似的条形图。
条形图 1- 由 Python 生成
从这张图上,我们可以看到,在某个特定的周日,对于某件产品来说,男性购买了 400 多件,而女性购买了大约 350 件。
作为一个数据分析师,你也许会对其中的差异做出几个可能的解释。
一个很显然的可能解释是,该产品在男性中比在女性中更流行。另一个可能的解释是,样本量太小,这个差异是偶尔产生的。还有一个可能的解释是,在周日,由于某种原因,男性比女性更倾向于购买该产品。
为了搞明白哪个解释是正确的,你可能绘制另一张图,如下图所示:
折线图 1- 由 Python 生成
我们不再只显示周日的数据,而是整整一周的数据。正如你所见,从这张图中,我们可以看到,这种差异在不同的日子里很一致。
从这个简单的分析中,你可能得出了结论,对这种差异,一个最有说服力的解释就是,这个产品更受男性而不是女性欢迎。
另一方面,如果你看到是如下所示的图呢?
折线图 2- 同样由 Python 生成
那么,如何解释出现在周日的差异呢?
你也许会说,也许出于某种原因,男性在周日更倾向于购买该产品。或者,也许只是巧合,男性在周日购买了更多的该产品。
好了,这是个简化的例子,展示了数据分析在真实世界中看起来的样子。
我在谷歌和微软工作的时候做过数据分析,跟这个例子非常相似,只是更复杂一些罢了。事实上,我在谷歌工作时,是用 Python 来做这种分析,而我在微软的时候,用的是 JavaScript。
在这两家公司工作的时候,我用 SQL 从数据库中提取数据。然后,我会用 Python 和 Matplotlib(在谷歌工作时)或 JavaScrip 和 D3.js(在微软工作时)进行数据可视化和分析。
最流行的数据可视化库之一是 Matplotlib。
刚开始学习的话,它是个不错的库,因为:
它容易上手
其他一些库,如 seaborn 是以它为基础的。因此,学习 Matplotlib 可以帮你随后学习其他库。
首先,你应该学习数据分析和可视化的基础知识。我在网上没有找到相关的好资源。因此,最终,我在 YouTube 上做了相关的视频(用 Python 和 Matplotlib 进行数据分析 / 可视化的入门课程)。
我还在 Pluralsight 上做了相关的整个课程,如果你报名参加他们的 10 天免费试用,就可以免费获得这个课程。
这两个我都推荐给你。
学习了数据分析和可视化基础知识之后,在 Coursera 和 Khan Academy 上学习统计的基础知识也是很有帮助的。
通常,脚本编写是指编写小程序以让简单任务自动化。
我在这里举个来自我个人经验的例子。
我曾在日本的一家小型初创企业工作,我们有个电邮支持系统,用来回复客户通过电邮给我们提出的问题。
我在那里工作的时候,我的任务是计算含有特定关键字的电邮数量,这样我们才可以分析我们收到的电邮。
我们本来应该用人工统计,但是,我写了个简单的程序 / 简单的脚本来自动完成该任务。
事实上,那时我们是用 Ruby 编写脚本,但是,对于这样的任务来说,Python 也是个不错的语言选择。Python 适合这种类型的任务主要是因为它有相对简单的语法并且容易编写。用它来写些小程序并进行测试花不了多少时间。
你可以用 PyGame 库来开发游戏,但是,它不是最流行的游戏引擎。如果把游戏作为兴趣爱好,你可以用它来构建项目,但是,如果您真的要做游戏开发,我个人不建议选择它。
相反,我推荐用 Unity 的 C# 脚本,它是最流行的游戏引擎之一。它允许在很多平台上构建游戏,这些平台包括:Mac、Windows、iOS 和安卓。
可以用 Python 的 Tkinter 来开发,但是它似乎不是最流行的选择。
相反,用 Java、C# 和 C++ 等语言开发桌面应用看起来更流行。
最近,一些公司也已经开始使用 JavaScript 来创建桌面应用程序了。
比如,Slack 的桌面应用程序是用 Electron 来构建的。它允许用 JavaScript 来构建桌面应用。
就我个人来说,如果我要构建一个桌面应用,我会用 JavaScript。它允许复用 web 版本的某些代码(如果有的话)。
换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...
十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...
前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...
迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...
python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写
第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...
head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...
挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了
Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...
相当于 ... 这里不是注释
还有FIXME
python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。
单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:# 单行注释print(hello world)注释可以放在代码上面也可以放在代...
主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...
或许是里面有没被注释的代码
自学的话要看个人情况,可以先在B站找一下视频看一下
最多设置5个标签!
这是个棘手的问题,因为 Python 有很多用途。但是随着时间的推移,我发现 Python 主要可用于一下三个方面:
Web 开发
数据科学——包括机器学习、数据分析和数据可视化
脚本编写
我们就依次来看看吧。
像 Django 和 Flask 这样基于 Python 的 Web 框架最近在 web 开发中变得非常流行。
这些 web 框架帮助你用 Python 创建服务器端代码(后端代码)。这些代码在你的服务器上而不是在用户设备以及浏览器上(前端代码)运行。如果你不熟悉后端代码和前端代码之间的区别,请参阅下面脚注。
那是因为 web 框架让构建通用后端逻辑变得更简单了。这包括把不同的 URL 映射到 Python 代码块、处理数据库和生成用户在浏览器中看到的 HTML 文件。
Django 和 Flask 是两种最流行的 Python web 框架。如果刚刚开始学习,那么可以用它们中的任何一个。
Gareth Dwyer 有篇关于这个话题的文章(https://www.codementor.io/garethdwyer/flask-vs-django-why-flask-might-be-better-4xs7mdf8v)写得非常好,我在这里引用一下:
主要对比:
Flask 提供简洁、灵活和细粒度控制。它很是客观(让您决定如何实现想要的东西)。
Django 提供一种包罗万象的体验:您可以获得管理面板、数据库接口、ORM(object-relational mappling,对象关系映射),还有开箱即用的应用程序和项目的目录结构。
您应该选择:
Flask,如果您专注于体验和学习机会,或者您想对选用哪个组件有更大的控制权(例如您想使用哪个数据库和如何与它们交互)。
Django,如果你专注于最终的产品。特别是如果您正在做一个简单的应用程序(如一个新闻网站、电子商店,或者博客)并且希望有一个直接明了的做法。
换句话说,如果你是初学者,Flask 可能是个更好的选择,因为用到的组件比较少。如果想要更多的定制,那么 Flask 也是个更好的选择。
而且,根据我的数据工程师朋友的看法,Flask 更适合创建那些所谓的 REST API 的东西,因为它比 Django 更灵活。
另一方面,如果想构建一些简单的东西,Django 可以更快地达到目标。
好,我们接着谈谈下一个!
首先,我们来回顾一下什么是机器学习。
我认为,解释什么是机器学习的最好方法莫过于举个例子。
假设你想开发一个程序用于自动检测图片中的内容。
因此,对于下面的这张图片(图片 1),你希望程序能识别出这是条狗。
图 1
而对于下面的这张图片(图片 2),你希望程序能识别出它是张桌子。
图 2
你也许会说,我可以用几行代码搞定。例如,如果在图片上有很多淡棕色的像素,那么我们可以说那是狗。
或者,你可以找到在照片中检测边缘的方法。然后,你也许会说,如果有很多直边,那么那就是一张桌子。
但是,这种方法很快就遇到麻烦了。如果图片上是条没有棕色毛发的白狗怎么办?如果图片上显示的只是桌子的圆形部分呢?
轮到机器学习大显身手了。
机器学习可实现一些算法,能自动检测给定输入中的模式。
比如,你给机器学习的算法提供 1000 张狗的照片和 1000 张桌子的照片。那么,它将会学习区别狗和桌子。当您给出一张狗或桌子的新图片时,它将能够识别出是狗还是桌子。
我认为,这和婴儿学习新事物有点类似。婴儿是如何知道一样东西看起来像狗,而另一样东西看起来像桌子呢?可能就是从大量的例子中学到的。
你也许不会明确地告诉一个婴儿:“如果一样东西是毛茸茸的,并且有着淡棕色的毛发,那么它可能是条狗。”
你可能只是说:“那是条狗。这也是条狗。这是桌子。那也是桌子。”
机器学习算法的工作方式大致相同。
你可以把同样的想法应用于:
推荐系统(像 YouTube、Amazon 和 Netflix 在用的)
面部识别
声音识别
你可能听说过的流行的机器学习算法包括:
神经网络
深度学习
支持向量机
随机森林
你可以使用任何一个上述算法来解决我刚才解释过的图片标注问题。
有一些流行的 Python 机器学习库和框架,其中最流行的两个是 scikit-learn 和 TensorFlow。
scikit-learn 附带了一些更流行的内置机器学习算法。我刚才提到了其中的几个。
TensorFlow 更像是个低级库,它允许构建自定义机器学习算法。
如果你刚开始一个机器学习项目,那么我建议先用 scikit-learn。如果你开始遇到效率问题,那么我建议用 TensorFlow。
要学习机器学习基础知识的话,我建议选择斯坦福或加州理工学院的机器学习课程。
请注意,你需要微积分和线性代数的基本知识以理解这些课程中的某些内容。
然后,我会用 Kaggle 来练习从课程中学到的知识。Kaggle 是个网站,大家在这个网站上比试谁能对一个给定的问题构建出最佳的机器学习算法。网站上也有给初学者用的好教程。
为了帮助理解,我在这里举个简单的例子。假设你为一家在线销售产品的公司工作。
那么,作为数据分析师,你也许会画一个类似的条形图。
条形图 1- 由 Python 生成
从这张图上,我们可以看到,在某个特定的周日,对于某件产品来说,男性购买了 400 多件,而女性购买了大约 350 件。
作为一个数据分析师,你也许会对其中的差异做出几个可能的解释。
一个很显然的可能解释是,该产品在男性中比在女性中更流行。另一个可能的解释是,样本量太小,这个差异是偶尔产生的。还有一个可能的解释是,在周日,由于某种原因,男性比女性更倾向于购买该产品。
为了搞明白哪个解释是正确的,你可能绘制另一张图,如下图所示:
折线图 1- 由 Python 生成
我们不再只显示周日的数据,而是整整一周的数据。正如你所见,从这张图中,我们可以看到,这种差异在不同的日子里很一致。
从这个简单的分析中,你可能得出了结论,对这种差异,一个最有说服力的解释就是,这个产品更受男性而不是女性欢迎。
另一方面,如果你看到是如下所示的图呢?
折线图 2- 同样由 Python 生成
那么,如何解释出现在周日的差异呢?
你也许会说,也许出于某种原因,男性在周日更倾向于购买该产品。或者,也许只是巧合,男性在周日购买了更多的该产品。
好了,这是个简化的例子,展示了数据分析在真实世界中看起来的样子。
我在谷歌和微软工作的时候做过数据分析,跟这个例子非常相似,只是更复杂一些罢了。事实上,我在谷歌工作时,是用 Python 来做这种分析,而我在微软的时候,用的是 JavaScript。
在这两家公司工作的时候,我用 SQL 从数据库中提取数据。然后,我会用 Python 和 Matplotlib(在谷歌工作时)或 JavaScrip 和 D3.js(在微软工作时)进行数据可视化和分析。
最流行的数据可视化库之一是 Matplotlib。
刚开始学习的话,它是个不错的库,因为:
它容易上手
其他一些库,如 seaborn 是以它为基础的。因此,学习 Matplotlib 可以帮你随后学习其他库。
首先,你应该学习数据分析和可视化的基础知识。我在网上没有找到相关的好资源。因此,最终,我在 YouTube 上做了相关的视频(用 Python 和 Matplotlib 进行数据分析 / 可视化的入门课程)。
我还在 Pluralsight 上做了相关的整个课程,如果你报名参加他们的 10 天免费试用,就可以免费获得这个课程。
这两个我都推荐给你。
学习了数据分析和可视化基础知识之后,在 Coursera 和 Khan Academy 上学习统计的基础知识也是很有帮助的。
通常,脚本编写是指编写小程序以让简单任务自动化。
我在这里举个来自我个人经验的例子。
我曾在日本的一家小型初创企业工作,我们有个电邮支持系统,用来回复客户通过电邮给我们提出的问题。
我在那里工作的时候,我的任务是计算含有特定关键字的电邮数量,这样我们才可以分析我们收到的电邮。
我们本来应该用人工统计,但是,我写了个简单的程序 / 简单的脚本来自动完成该任务。
事实上,那时我们是用 Ruby 编写脚本,但是,对于这样的任务来说,Python 也是个不错的语言选择。Python 适合这种类型的任务主要是因为它有相对简单的语法并且容易编写。用它来写些小程序并进行测试花不了多少时间。
你可以用 PyGame 库来开发游戏,但是,它不是最流行的游戏引擎。如果把游戏作为兴趣爱好,你可以用它来构建项目,但是,如果您真的要做游戏开发,我个人不建议选择它。
相反,我推荐用 Unity 的 C# 脚本,它是最流行的游戏引擎之一。它允许在很多平台上构建游戏,这些平台包括:Mac、Windows、iOS 和安卓。
可以用 Python 的 Tkinter 来开发,但是它似乎不是最流行的选择。
相反,用 Java、C# 和 C++ 等语言开发桌面应用看起来更流行。
最近,一些公司也已经开始使用 JavaScript 来创建桌面应用程序了。
比如,Slack 的桌面应用程序是用 Electron 来构建的。它允许用 JavaScript 来构建桌面应用。
就我个人来说,如果我要构建一个桌面应用,我会用 JavaScript。它允许复用 web 版本的某些代码(如果有的话)。
相关问题推荐
换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...
十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...
前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...
迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...
python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写
第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...
head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...
挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了
Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...
相当于 ... 这里不是注释
还有FIXME
python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。
单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:# 单行注释print(hello world)注释可以放在代码上面也可以放在代...
主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...
或许是里面有没被注释的代码
自学的话要看个人情况,可以先在B站找一下视频看一下