作者:子龙0322
链接:
https://www.jianshu.com/p/2a864fabec53
Python 大法好
倘若你想学 Python — 或你近期已在学习它 — 那样你或许应该问下自己:— 我用 Python 都能做些什么呢?
好吧,这还真是个蛮难回答的问题,由于 Python 能做的事儿真是太多了啦!
过去一段时间内,我观察到 Python 有这么三个最重点的用途:
Web
研发数据科学 —
包含设备学习,数据分析和数据可视化写脚本
那咱们就依次聊聊这三项。
Web 研发
在 Web 研发中,像 Django 和 Flask 这类基于 Python 的 Web 框架近期变得非常流行。
这些框架帮忙你用 Python 创建服务端(后台)的代码。
等等,咱们为何必须 Web 框架?
这是由于用 Web 框架能很容易的构建起后台研发的通用规律,如:将 Python 的代码块与 URLs 匹配,与数据库的交互,创建 HTML 文件供浏览器读取等等。
那我应该用哪个 Python 的 Web 框架
Django 和 Flask 是 Python 最流行的两个 Web 框架。倘若你是新手,我举荐你任选其一。
Django 和 Flask 有什么区别?
这个问题在 Gareth Dwyer 的《Flask vs. Django: Why Flask Might Be Better》上已作了非常好的回答,我引用其中的部分:
重点对比:
Flask 是简单、灵活、渐进性的一个框架,这给了
研发者很大的自由度。Django 则包罗万象了:它
供给掌控面板、数据库接口、ORM(object-realtional mapping) 和“开箱即用”目录结构。 译者注:Flask vs Django 很像前端中 React/Vue vs Angular 或 Koa vs Express。Flask 轻量化、模块化且自由灵活,Django 一应俱全且概念较多。
你该怎么选取:
Flask,
倘若你关注经验的
累积和学习的机会,
或你对各组件想有更大的
掌控权(如数据库和与其交互方式的
选取)。Django,
倘若你想快速出活,尤其是当
制品特性单一,如
资讯网站、电子商城
或博客,并且你
期盼它们总是特性单一,
规律简单。
倘若你刚入门,Flask 或许是更好的选取,由于它本身仅有几个模块就能跑起来。另一,倘若你对项目有更加多的定制化需求,Flask 是更好的选取。
另一方面,倘若你的项目简单、直接,Django 能让你快速研发。
此刻,如果你准备学习 Django,我举荐你看 《Django for Beginners》,你亦能从这儿看有些这本书的免费章节。
Okay,让咱们进行下一趴!
数据科学 — 包含设备学习,数据分析和数据可视化
首要,什么是设备学习?
我认为解释什么是设备学习的最好方式是给出一个简单的例子。
假设你想研发一个能自动识别照片内容的程序。
例如,你想让你的程序识别出下图(Picture 1)是一张狗。
Picture 1
再甩出另一张照片(Picture 2),你想让你的程序识别出这是一张桌子。
Picture 2
你亦许会说,欧耶,我能写出代码来实现这事儿。例如,能够判断若照片中显现了有些亮棕色,就能够认为照片中有条狗。
或者,你发明了检测出照片中物体边缘的算法。而后,你就能够判断若图中显现了非常多直直的物体边缘,就能够认为图中有张桌子。
然而,这种办法火速会变得非常棘手。倘若图中的狗不是棕毛怎么办?倘若图中是张圆桌怎么办?
此时就轮到设备学习出场啦~
设备学习的算法能自动提取出输入的一系列信息的一起特征。
咱们能够向设备学习算法输入1000张狗的照片和1000张桌子的照片。而后,它从中学习和桌子的区别。当你再给出一张或桌子的照片时,它便能做出识别。
我觉得这点非常像婴儿的学习方式。婴儿怎样学习什么是狗什么是桌子呢?通常是从一系列的生活场景中学习。
你通常不会对婴儿说:“倘若某物是毛茸茸的或有亮棕毛,那样它可能是狗”。
你通常会说:“看这是狗。那是狗。或你看,这是桌子,那个亦是桌子”...
设备学习算法和教育婴儿很像。
这个思路你可应用于:
举荐系统(像 YouTuBe, Amazon, 和 Netflix)面部识别声音识别
和其他一系列类似的应用。
其中有些流行的设备学习算法包含:
神经网络深度学习支持向量机随即森林法则
你能够运用上面的任何算法来处理我前面说到过的照片标记问题。
Python 的设备学习
Python 有许多流行的设备学习的库和框架。
其中最流程的两个是 scikit-learn 和 TensorFlow。
scikit-learn 中内置的
非常多流行的
设备学习算法,
包含我在上文
说到的
哪些。TensorFlow 相对会更底层
有些,它
准许你自定义
设备学习的算法。
倘若你刚起始设备学习的项目,我举荐你从 scikit-learn 起始。倘若你起始遇到了些性能上的问题,那样你要试一试 TensorFlow 了。
应该怎么学习设备学习呢?
设备学习的入门,我举荐 Stanford’s 和 Caltech’s 这两门课程。
温馨提示,你首要要把握些微积分和线性代数的基本知识才可很好地理解这些课程中的内容。
而后可从 Kaggle 上学习。人们竞相为这个网站上放出的问题设计设备学习算法。该网站亦有非常多非常好的入门教程。
关于数据分析和数据可视化呢?
为了有助于理解,咱们先看个简单的例子。
假设你做为一名数据分析师在一家电商机构工作,你亦许会画出这般一张柱状图:
Bar Chart 1 — generated with Python
从这张图咱们能够看出,在周日男人买了400多件商品,女性买了大概350件商品。
关于男女购买数量的区别,做为数据分析师的你可能会提出有些可能的解释。
一个很可能的解释是这件商品在男人中间更受欢迎。另一种可能的解释是数据样本太小,这种差异只是偶然导致的。还有的可能的解释是,男人常常仅在星期天出于某种原由才购买这种商品。
为了搞清楚这些解释哪个是正确的,你亦许要画另一一张图表:
Line Chart 1 — generated with Python
与上张只看到周日数据的图表相比,这次咱们看到了一整周的数据。如你所见,从这张图上看,每日的购买关系相当一致。
从这个小小的分析中,你可能会得出结论,针对这种差异最令人信服的解释是,这种制品在男人中比女性更受欢迎。
反转一下,倘若你看到的是这般一张图表呢?
Line Chart 2 — also generated with Python
那样,咱们怎么解释周日男女购买量的区别?
你可能会说,亦许男人出于某种原由会在周日购买更加多的这种制品。或许,这仅仅是种巧合。
因此,这是一个简化的例子来讲明数据分析在现实世界中可能是什么样子的。
我在谷歌和微软时做的数据分析与该例非常类似 — 只是更繁杂些罢了。我在谷歌运用 Python ,在微软运用 JavaScript。
在这两家公司我都用 SQL 从数据库中取数。而后我用 Python 和 Matplotlib(在谷歌)或 JavaScript 和 D3(在微软)对这些数据做分析和可视化。
用 Python 进行数据分析和数据可视化
Python 中最流行的数据可视化库是 Matplotlib 。
它是一个非常好的选取,由于:
它非常好上手。
非常多其他的库(如 seaborn)都依赖它进行构建,
因此学会 Matplotlib 将有助于之后其他库的学习。
怎样起始学习 Python 的数据分析和可视化?
你应该先学些基本的数据分析和可视化知识。而我在网上想找些这般的学习资源时,我并没找到。因此,我就自己录制了些这般的视频:
作者自己录的用 Python 和 Matplotlib 介绍数据分析和可视化的视频:
https://youtu.be/a9UrKTVEeZA
在学完基本的数据分析和可视化之后,再在 Coursera 或 可汗学院 上学习些统计学的基本知识会一样有帮忙。
写脚本
什么是脚本?
脚本一般指有些小的程序,它们被用于做有些自动化的事情。
So, 让我举一个我个人的例子。
我曾经在一家日本的初创工作工作,机构有一个邮件响应系统。咱们用它回复顾客发给咱们的邮件。
当时我的一部分任务是计算包括某些关键字的邮件数量,这般咱们就能够对收到的邮件进行分析。
当时咱们能够人工进行这些处理,但我写了一个简单的程序/脚本去自动的完成它。
关于嵌入式研发呢?
针对嵌入式研发我没太有经验,然则我晓得 Python 能够和 Rasberry Pi 协同工作,它似乎在硬件兴趣者中是非常流行的应用。
关于游戏呢?
你能用一款叫 PyGame 的库去研发游戏,但它比较小众。但讲真,你能够玩玩它,要真去研发游戏还是别用它。
我会举荐你基于 C# 的 Unity 引擎,它是非常流行的游戏引擎。它准许你基于多种平台如 Mac,Windows, iOS 和 Android 来研发游戏。
关于桌面应用呢?
Python 的 Tkinter 是能够研发,但它貌似一样不是一个好但选取。
与之相对,Java, C#, C++ 都是做这方面都好手。
近期,有些机构起始用 JavaScript 来研发桌面应用。
例如,Slack’s 的桌面应用 便是基于 Electron (译者注:其基于 JavaScript)。
个人意见,倘若你想研发一个桌面应用,我举荐用 JavaScript 。这让你假如要研发 Web 版时,非常多代码都能够重用。
最后,我其实亦无桌面应用的研发经验,因此我哪里说的不对,请留言加以指正。
Python 3 还是 Python 2 ?
我举荐的是 Python 3,由于在这个时间点,它是更现代且更公众的选取。
最后,作者安利了非常多自己的课程,就不做翻译啦。。。
另一,Python 亦非常适合做网络爬虫,而作者无提及。