python3 array为什么不能放不同类型的数据_小白入门Python数据科学全教程lt;一gt;...

f583c00f3069033e576667e8b6538144.png

前言

  • 本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法

  • 你将会学习到如何使用python做基本的数据分析

  • 你还可以了解机器学习算法的原理和使用

说明

先说一段题外话。我是一名数据科学家,在用SAS做分析超过5年后,我决定走出舒适区,寻找其它有效的数据分析工具,很快我发现了Python!

我非常喜欢编程,这是我真正喜欢做的事情。事实证明,编程并没有想象中的那么难。

我在一周之内学习了Python的基本语法,接着我一方面继续深入探索Python,另一方面我帮助其他人学习这门语言。Python最初是一门简单的脚本语言,但随着Python社区的不断发展壮大,越来越多的开发者参与到Python工具库开发中来,所以Python拥有了极其丰富的数据分析和挖掘第三方库。

内容目录

1、Python数据分析的基本概况

  • 为何使用Python做数据分析?

  • Python2.7还是Python3.7?

  • 如何安装Python?

  • 使用Python运行一段简单的代码

  • 如何使用Jupyter notebook

2、Python数据结构和库

  • Python数据结构

  • Python循环结构和判断语句

  • Python库

3、使用Pandas做探索性分析

  • Series和DataFrame数据结构介绍

  • 具体数据集案例分析

4、Numpy基本概念

  • Numpy常见函数使用

5、使用Pandas和numpy做数据清洗

  • 处理数据集中的空值

  • 如何使用apply方法?

6、使用Matplotlib绘制图表

  • Matplotlib介绍

  • 使用Matplotlib绘制简单的柱状图

7、使用Scikit-learn建立预测模型

  • 逻辑回归算法

  • 决策树算法

  • 随机森林算法

1、Python数据分析的基本概况

为何使用Python做数据分析?

最近几年,Python用作数据分析语言引起了非常多的关注,一度超越R成为最受欢迎的数据科学工具。作为Python的使用者,我支持Python作为数据分析工具有以下理由:

  • 开源-免费安装使用

  • 语言简洁,是一门真正的强大的编程语言

  • 非常强大的在线社区

  • 学习门槛低

  • 极其丰富的第三方数据科学库

但它也有一些缺点:

Python是一种解释性语言而非编译性,速度相对比较慢。但是考虑到在学习和代码上节省的时间,Python依然是不二的选择。

Python 2.7还是Python 3.7?

很多初学者还在纠结选择Python 2.7还是Python 3.7?这两个版本有非常大的差异,简直就是两种语言。它们各有各的优缺点,取决于你使用的需求。

为什么Python 2.7

  • 绝对优势的社区支持!Python 2.x诞生于2000年,已经被使用快20年,许多公司依然在使用Python 2.7

  • 丰富的第三方库!目前绝大部分第三方库都是建立在Python 2.x基础上的,很多库并不支持Python 3.x版本。如果你将Python用于特定的应用程序,如高度依赖外部模块的web开发,那么建议使用Python 2.7

为什么Python 3.7

  • 语法更加简洁和快速。Python开发人员改进了Python 2.x的缺点,Python 3.x代表了Python未来发展的方向

  • Python 2.7 只维护到2020年

  • Python官方建议直接学习Python 3.x

如果将Python作为数据科学工具,我建议使用Python 3.x,因为基本上所有的数据科学第三方库都已经支持Python 3.x。当然选择哪一个版本不是目的,应当专注的是如何使用Python更好地服务于数据科学。

如何安装Python?

这里两种安装方法可供参考:

  • 直接去Python官网下载Python3.7安装包,再选择安装自己需要的第三方库和编辑器

  • 或者,你不想这么麻烦,你可以选择安装Anaconda,这是一个开源的Python发行版本,其预装了180多个第三方库和依赖包

第二种方法包含了数据科学用到的大部分工具包,为你省去很多安装时间。这也是本教程建议初学者使用的安装方法 。

选择Python开发环境

一旦你安装好了python,就需要选择开发环境用于Python编程,这里有四个常用选择:

  • 终端交互模式

  • IDLE(默认环境)

  • 其它IDE,如pycharm

  • Jupyter notebook(ipython)

36391116532353d8139608c38ef0e649.png
IDLE(默认环境)

这里不对它们作具体比较,读者可自行上网查询,选择什么样的开发环境取决于你的需求。

我建议初学者使用Jupyter notebook(ipython)作为Python数据分析的开发环境。Jupyter Notebook 是一个交互式笔记本,本质是一个 Web 应用程序,便于创建和共享程序文档,支持实时代码,数学方程,可视化和markdown。用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。数据挖掘领域中最热门的比赛 Kaggle 里的资料都是Jupyter 格式。

本教程也是使用Jupyter Notebook 作为代码环境。

e33e2c2a0afe88b1364477905bd50117.png
Jupyter Notebook编程界面

使用Python运行一段简单的代码

d8e1f3df65960161a019eb976cef0927.png

如何使用Jupyter Notebook

Anaconda预装了Jupyter Notebook库,所以安装Anaconda后就可以直接使用Jupyter Notebook。

启动Jupyter Notebook有两种方法,你可以在命令行中键入jupyter notebook再按enter键,便可以进入Jupyter Notebook环境,记住不要关闭命令行窗口,否则Jupyter环境会失效。

b083e8897822950bc61a8e36fe427a66.png
命令行键入jupyter notebook

还可以在开始菜单Anaconda文件夹中直接双击Jupyter Notebook

43bda0f0e40ca2a959ff071c280fb582.png

然后进入Jupyter Notebook主界面,点击New新建,点击Python 3,就可以开始愉快的编程了。

4fd53dafb6102228ec8a2e40e4e12dba.png
Jupyter Notebook主界面
14e89d7125e769447cdf0769bc24c117.png
notebook界面

你可以修改该notebook的名字,添加或删除代码编辑框,使用“Shift + Enter” 或者“Ctrl + Enter”快捷键运行代码。具体功能快捷键这里不做赘述,可以去Jupyter Notebook 快捷键 查看。

2、Python数据结构和库

Python数据结构

接下来要讲到Python的数据结构,你应该尽可能熟悉它,因为在接下来的数据分析代码中会经常用到这些数据结构。

  • 字符串

Python 可以操作字符串。字符串有多种形式,可以使用单引号('……'),双引号("……")都可以获得同样的结果2。反斜杠\可以用来转义:

86b23f4e8aca4776cbd455ac105431e2.png
字符串示例
  • 列表

Python 中可以通过组合一些值得到多种复合数据类型。其中最常用的列表,可以通过方括号括起、逗号分隔的一组值得到。一个列表可以包含不同类型的元素,但通常使用时各个元素类型相同:

20a8acd0c4ffbd485d6e8aa408ab11e1.png
列表示例
  • 元组

可以看到列表和字符串有很多共同特性,例如索引和切片操作。Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

e46753601dc04b7351dd5f012bd0d28f.png
元组示例
  • 字典

另一个非常有用的 Python 內置数据类型是字典。字典在其他语言里可能会被叫做 联合内存 或 联合数组。与以连续整数为索引的序列不同,字典是以 关键字 为索引的,关键字可以是任意不可变类型,通常是字符串或数字。如果一个元组只包含字符串、数字或元组,那么这个元组也可以用作关键字。但如果元组直接或间接地包含了可变对象,那么它就不能用作关键字。列表不能用作关键字,因为列表可以通过索引、切片或 append() 和 extend() 之类的方法来改变。

理解字典的最好方式,就是将它看做是一个 键: 值 对的集合,键必须是唯一的(在一个字典中)。一对花括号可以创建一个空字典:{} 。另一种初始化字典的方式是在一对花括号里放置一些以逗号分隔的键值对,而这也是字典输出的方式。

以下是使用字典的一些简单示例:

610fa4e2099554fec2d6bbed41cef154.png
字典示例

Python循环结构和判断语句

  • for循环

和大多数编程语言一样,Python也有for循环结构,其被广泛使用在迭代方法中。

Python 中的for语句与你在 C 或 Pascal 中可能用到的有所不同。Python 中的for语句并不总是对算术递增的数值进行迭代(如同 Pascal),或是给予用户定义迭代步骤和暂停条件的能力(如同 C),而是对任意序列进行迭代(例如列表或字符串),条目的迭代顺序与它们在序列中出现的顺序一致。

6c89bf687ea7ac0972788d2057031896.png

如果在循环内需要修改序列中的值(比如重复某些选中的元素),推荐你先拷贝一份副本。对序列进行循环不代表制作了一个副本进行操作。切片操作使这件事非常简单:

d539c217883f89cfe83a17911a1360c2.png

如果写成for w in words:,这个示例就会创建无限长的列表,一次又一次重复地插入defenestrate

  • range函数

如果你确实需要遍历一个数字序列,内置函数range()会派上用场。它生成算术级数:

e2e440a80c811ed6833a3b94f328befc.png
  • if判断语句

可能最为人所熟知的编程语句就是if语句了,这是python中的判断语句。

使用形式为if ... elif ... else ...

可以有零个或多个elif部分,以及一个可选的else部分。关键字 'elif' 是 'else if' 的缩写,适合用于避免过多的缩进。一个if...elif...elif... 序列可以看作是其他语言中的switchcase语句的替代。

b692b25a07aa46485ac990625005867f.png

现在你熟悉了Python中的循环结构和判断语句,可以更进一步去学习更多的语法知识。

如果每做一件事都需要从头开始写代码,那么这将是一场噩梦,比如你想要对一个列表里数字进行加法运算,难道还要一个一个数字加起来吗?这样的话,你肯定不想学习python了。庆幸的是,python有很多工具库,可以帮助我们更加直接有效地解决问题。

例如,求数学中的阶乘,你可以很简单的导入math模块,使用已经编译好的阶乘函数:

6fb4eb90c80aa1a7de9dad7bb5106e06.png

当然在使用函数之前,你必须要导入库和函数。话不多说,一起来探索更多的Python库吧!

Python库

在学习更酷炫实用的Python库之前,第一步要知道什么是Python库。

Python库是一个相关功能模块的集合,里面包含各种函数方法,用来解决复杂的问题。

这些库分为两类:标准库和第三方库,标准库是Python内置库,无需再安装,如math、range;第三方库需要另外安装,如jupyter、pandas、numpy

  • 安装第三方库

安装第三方库有两种方法,第一种是pip方法,pip是Python包管理工具,自带无需安装,提供了对Python 库的查找、下载、安装、卸载的功能。

如果想安装pandas库,你可以在命令行输入:

pip install pandas

接下来等待自行下载安装。

第二种是手动安装,在python库集合里下载相关库文件并安装。

  • 导入库和库函数

使用库之前,需要将其导入Python环境。同样有两种方法可以做到(以math库为例):

import math

或者

from math import *

第一种方法,导入整个库,如果你需要使用库中的某个函数,比如阶乘函数factorial,那么,需要用math.factorial()形式。

第二种方法直接导入了math库的所有方法和函数,直接factorial()就可以了。

建议使用第一种方法,用什么导入什么,不浪费。

  • 最常用的数据科学库列表

numpy:它是一个由多维数组对象和用于处理数组的例程集合组成的库,里面包含了大量的计算函数,可以很轻松的进行科学计算。

scipy:科学计算的另一个核心库是 SciPy。它基于 NumPy,其功能也因此得到了扩展。SciPy 主数据结构又是一个多维数组,由 Numpy 实现。这个软件包包含了帮助解决线性代数、概率论、积分计算和许多其他任务的工具。此外,SciPy 还封装了许多新的 BLAS 和 LAPACK 函数。

pandas:是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,具备强大的数据展示功能。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

matplotlib:是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台交互式环境的出版物质量数据。Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。只需几行代码即可生成绘图,直方图,功率谱,条形图,误差图,散点图等。

scikit-learn:是一个机器学习库,可以对数据进行分类,回归,无监督,数据降维,数据预处理等等,包含了常见的大部分机器学习方法。

StatsModels:Statsmodels 是一个 Python 模块,它为统计数据分析提供了许多机会,例如统计模型估计、执行统计测试等。在它的帮助下,你可以实现许多机器学习方法并探索不同的绘图可能性。

Seaborn:Seaborn 本质上是一个基于 matplotlib 库的高级 API。它包含更适合处理图表的默认设置。此外,还有丰富的可视化库,包括一些复杂类型,如时间序列、联合分布图(jointplots)和小提琴图(violin diagrams)。

Plotly:Plotly 是一个交互可视化库,它可以让你轻松构建复杂的图形。该软件包适用于交互式 Web 应用程,可实现轮廓图、三元图和三维图等视觉效果。

Bokeh:Bokeh 库使用 JavaScript 小部件在浏览器中创建交互式和可缩放的可视化。该库提供了多种图表集合,样式可能性(styling possibilities),链接图、添加小部件和定义回调等形式的交互能力,以及许多更有用的特性。

Scrapy:Scrapy 是一个用来创建网络爬虫,扫描网页和收集结构化数据的库。此外,Scrapy 可以从 API 中提取数据。由于该库的可扩展性和可移植性,使得它用起来非常方便。

TensorFlow:TensorFlow 是一个流行的深度学习和机器学习框架,由 Google Brain 开发。它提供了使用具有多个数据集的人工神经网络的能力。在最流行的 TensorFlow应用中有目标识别、语音识别等。在常规的 TensorFlow 上也有不同的 leyer-helper,如 tflearn、tf-slim、skflow 等。

Keras:Keras 是一个用于处理神经网络的高级库,运行在 TensorFlow、Theano 之上,现在由于新版本的发布,还可以使用 CNTK 和 MxNet 作为后端。它简化了许多特定的任务,并且大大减少了单调代码的数量。然而,它可能不适合某些复杂的任务。

requests:requests库是一个常用的用于http请求的模块,它使用python语言编写,可以方便的对网页进行爬取,是学习python爬虫的较好的http请求模块。

Blaze:Blaze生态系统为python用户对大数据提供了高效计算的高层接口,Blaze整合了包括Python的Pandas、NumPy及SQL、Mongo、Spark在内的多种技术,使用Blaze能够非常容易地与一个新技术进行交互。

现在你熟悉了Python了Python数据结构和库的使用,接下来要用这些知识去解决一些简单的问题。比如说利用pandas去做数据探索,用matplotlib可视化图表等等。

未完待续!

本文部分翻译自Kunal Jain博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c winform 上传文件到mysql_C# winform DevExpress上传图片到数据库【转】

实现功能如下图:注明:此文使用的是DevExpress控件,winform 原生控件也是一样使用方法。1.点击选择图片按钮,功能为通过对话框选择要上传的文件,并将该文件在下面的PictureEdit中显示出来。具体代码如下:pri…

V 8 nfs+drbd+heartbeat

V 8 nfsdrbdheartbeatnfsdrbdheartbeat,nfs或分布式存储mfs只要有单点都可用此方案解决在企业实际生产场景中,nfs是中小企业最常用的存储架构解决方案之一,该架构方案部署简单、维护方便,只需通过配inotifyrsync简单而高效的数据同…

nodemailer使用_如何使用Nodemailer使用HTML作为内容发送电子邮件 Node.js

nodemailer使用Prerequisite: 先决条件: How to send emails using Nodemailer | Node.js 如何使用Nodemailer发送电子邮件。 Node.js How to send emails with attachments using Nodemailer | Node.js 如何使用Nodemailer发送带有附件的电子邮件。 Node.js This …

angularjs 元素重复指定次数_[LeetCode] 442. 数组中重复的数据

[LeetCode] 442. 数组中重复的数据题目链接: https://leetcode-cn.com/problems/find-all-duplicates-in-an-array难度:中等通过率:61.5%题目描述:给定一个整数数组 a,其中1 ≤ a[i] ≤ n ( n 为数组长度),…

docker 安装mysql 实战文档_docker 安装mysql

PassJava (佳必过) 项目全套学习教程连载中,关注公众号第一时间获取。docker 安装mysql1.下载镜像sudo docker pull mysql:5.7ubuntuVM-0-13-ubuntu:~$ sudo docker pull mysql:5.75.7: Pulling from library/mysqlc499e6d256d6: Pull complete22c4cdf4ea75: Pull c…

眼球追踪

眼球追踪类似于头部追踪,但是图像的呈现取决于使用者眼睛所看的方向。例如,人们可以用“眼神”完成一种镭射枪的瞄准。眼球追踪技术很受VR专家们密切关注。Oculus创始人帕尔默拉奇就曾称其为“VR的心脏”。对于人眼位置的检测,能够为当前所处…

python下载文件暂停恢复_Python关于Threading暂停恢复解决办法

我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦start后, 线程就属于失控状态. 不过, 我们可以自己实现这些. 一般的方法就是循环地判断一个标志…

信息系统状态过程图_过程状态图中使用的重要术语| 操作系统

信息系统状态过程图1)上下文切换 (1) Context Switching) Whenever a process is transferred within the system, it moves within different states. These states are known as the process states. When a process goes from one state to another state inside the system…

mysql 吧库下的表名都加_mysql数据库表名大小写问题

mysql数据库表名大小写问题mysql数据库linux版本表名、字段名默认大小写敏感,即区分大小写。查看mysql有关大小写参数:lower_case_file_system是一个只读参数,无法被修改,这个参数是用来告诉你在当前的系统平台(linux\windows等)下…

rgb 灰色_金属+RGB+无线,我要买爆这款海盗船VIRTUOSO鉴赏家游戏耳机

海盗船最近新出的旗舰耳机,VIRTUOSO RGB Wireless SE,中文名叫鉴赏家。耳机一改往日欧美电竞风,改走金属质感高大上简约风,不过讲真,这颜值我吃起来很香。考虑文章过长,我先概括一下入手理由,具…

c mysql使用场景_Mysql 场景

1个SQL题,1个场景题,会有点难度!SQL题该SQL题大量涉及到row_number,case when,group by等高级用法,有一定的实用价值,总结出来,供日后参考Question.1:分组汇总给定筛选条…

以己为壑

2019独角兽企业重金招聘Python工程师标准>>> 今天把软件工程里面关于面向对象的设计学完了,使我对面向对象OOA和OOD的思想有了进一步的认识,各科知识千沟万壑,犬牙交错,的确是这样,能蒙住自己眼的永远是你自己,而不是这个世界,因为美就在那里;裹住自己双足的的永远是…

macos安装vscode_如何使用VSCode进行PostgreSQL开发及调试

Visual Studio Code (VSCode)是一个轻量级但功能强大的源代码编辑器,可在桌面上运行,适用于Windows,macOS和Linux。 它内置了对JavaScript,TypeScript和Node.js的支持,并具有丰富的其他语言(如C,C&#xff…

最小生成树 kruskal_使用Kruskal算法求解Java最小生成树问题

最小生成树 kruskalIn Electronic Circuit we often required less wiring to connect pins together. We can model this wiring problem with a connected, undirected graph G(V, E), where V is the set of pins, E is the set of possible interconnections between pair …

mysql数据库面试题 软件测试_软件测试数据库面试题一

前提本次分享只局限于 sql server 和 mysql 这两种数据库,其他数据库暂不总结正文1. 对查询的字段进行去重(distinct)用法注意:1. distinct【查询字段】,必须放在要查询字段的开头,即放在第一个参数;2. 只能在SELECT 语…

mongoDB 使用手册

2019独角兽企业重金招聘Python工程师标准>>> 1、基本操作db.AddUser(username,password) 添加用户db.auth(usrename,password) 设置数据库连接验证db.cloneDataBase(fromhost) 从目标服务器克隆一个数据库db.commandHelp(name) returns the help for the commanddb.…

android搜索框功能实现_巧用 Trie 树,实现搜索引擎关键词提示功能

来源 | 码海责编 | Carol封图 | CSDN 付费下载于视觉中国我们几乎每天都在用搜索引擎搜索信息,相信大家肯定有注意过这样一个细节:当输入某个字符的时候,搜索引框底下会出现多个推荐词,如下,输入「python」后,底下会出…

qt5.9.0调试如何查看变量的值_深入了解 Java 调试

Bug(俗称"八阿哥") 是软件开发绕不过的一道坎,因此调试便成了每位程序员一项必备的核心技能。调试不仅有助于理解程序的运行流程,还能改进代码质量,最终提高开发者解决问题的能力以及交付软件的品质。本文旨在讨论 Java 调试关键技…

(6) 如何用Apache POI操作Excel文件-----POI-3.10的一个和注解(comment)相关的另外一个bug...

如果POI-3.10往一个工作表(sheet)里面插入数据的话,需要注意了,其有一个不太被容易发现的bug。 被插入的工作表(sheet)里面的单元格没有包含任何的注解(comment)的时候,插…

python导入模块以及类_python模块的导入以及模块简介

标签: 一、模块的定义及类型 1、定义 模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.py文件里,而如果有些功能实现起来很复杂,那么就需要创建n个.py文件,这n个.py文件的集合就是模块 …