首页 > 基于python的数据分析方法五种_利用Python进行数据分析 第5章 pandas入门(1)

基于python的数据分析方法五种_利用Python进行数据分析 第5章 pandas入门(1)

pandas库,含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具。pandas是基于NumPy数组构建。

pandas常结合数值计算工具NumPy和SciPy、分析库statsmodels和scikitlearn,和可视化库matplotlib等工具一同使用。

5.1 pandas数据结构介绍

pandas的主要数据结构:Series和DataFrame

(1)Series

Series是一种类似于一维数组的对象,由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成:

1564035-20191006233917154-902786482.png

可通过Series的values和index属性获取其数组表示形式和索引对象:

1564035-20191006234900167-1926759159.png

可创建自定义的索引(Series的索引可以通过赋值的方式就地修改):

1564035-20191006235236819-230014762.png

1)与普通NumPy数组相比,可通过索引的方式选取Series中的单个或一组值:

1564035-20191007082529843-370469758.png

2)使用NumPy函数或类似Numpy的运算(如根据布尔类型数组进行过滤、标量乘法、应用数学函数等)都会保留索引值的链接:

1564035-20191007140546601-1138494371.png

1564035-20191007140631341-1753817910.png

3)还可将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射(故它可用在许多原本需要字典参数的函数中):

1564035-20191007141551670-1482715523.png

4)若数据被存放在一个Python字典中,也可以直接通过这个字典来创建Series:

如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)。

1564035-20191007141905218-2040416385.png

5)可传入排好序的字典的键以改变顺序:

1564035-20191007142523796-610146384.png

注意:California为新增的州,在sdata中找不到值,故结果为NaN(“非数字”, Not a Number);原sdata中的Utah不在states中,故被从结果中剔除。

6)pandas用isnull和notnull函数检测缺失数据(Series也有类似的实例方法 .isnull() ):

1564035-20191007143205956-572843220.png

Series类似的实例方法 .isnull() :

1564035-20191007143329993-1012717660.png

*** 7)Series最重要的一个功能:根据运算的索引标签自动对齐数据!(类似数据库的join操作)

1564035-20191007143827301-1812568492.png

8)Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切:

1564035-20191007144227188-793068841.png

(2)DataFrame

DataFrame是一个表格型的数据结构,含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。

DataFrame既又行索引也有列索引,可以被看做由Series组成的字典(共用同一个索引)。

1.1 )最常用的DataFrame创建方式

直接传入一个由等长列表或NumPy数组组成的字典:

1564035-20191007150358629-90438078.png

注:结果DataFrame会自动加上索引(跟Series一样),且全部列会被有序排列

.head() 方法可用于选取前五行:

1564035-20191007150710863-1353699953.png

DataFrame可通过指定列序列,对所有列按照指定顺序进行排列:

1564035-20191007151039747-967447105.png

如果传入的列在数据中找不到,就会在结果中产生缺失值:

1564035-20191007151957562-668487593.png

1.2 )另一种常见的DataFrame数据创建形式是嵌套字典

用嵌套字典传给DataFrame,pandas会被解释为:外层字典的键作为列,内层键作为行索引

1564035-20191007161835880-631736126.png

1564035-20191007161914687-238721435.png

内层字典的键会被合并、排序以形成最终的索引。如果明确指定了索引,则会按指定顺序进行排列:

1564035-20191007162950433-253501198.png

1.3 )由Series组成的字典差不多一样的用法

1564035-20191007163545300-515077476.png

2)将DataFrame的列获取为一个Series

通过类似字典标记的方式:

1564035-20191007152547375-435118765.png

属性访问的方式:

1564035-20191007152650437-369167457.png

注:返回的Series拥有原DataFrame相同的索引

3)通过位置或名称的方式获取行的Series

1564035-20191007153129390-1445924071.png

Ps:loc属性详解:???

4)通过赋值的方式,可以对列进行修改

1564035-20191007153504847-502832581.png

Ps:将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。

a)如果赋值的时一个Series,则会精确匹配DataFrame的索引,所有空位都将被填上缺失值:

1564035-20191007160250821-86834325.png

b)为不存在的列赋值,会创建一个新列。关键字del用于删除列

1564035-20191007160610490-2082277731.png

关键字del用于删除列

1564035-20191007160746534-616763040.png

5)对DataFrame进行转置(交换行和列)

可使用类似NumPy数组的方法 .T:

1564035-20191007162329267-1107044323.png

6)DataFrame构造函数所能接受的各种数据

1564035-20191007164112574-1535062882.png

7)设置DataFrame的index和columns的name属性

1564035-20191007164402023-823699545.png

8)DataFrame的values属性

跟Series一样values属性也会以二维nadarray的形式返回DataFrame中的数据:

1564035-20191007164727445-1235061901.png

注:如果DataFrame各列的数据类型不同,则值数组的dtype就会选用能兼容所有列的数据类型:

1564035-20191007165006760-1369790957.png

(3)索引对象

pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。

构建Series和DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index:

1564035-20191007170913750-1833461611.png

Index对象是不可变的,无法对其进行修改。不可变,可使Index对象在多个数据结构之间安全共享:

1564035-20191007171528660-1477901013.png

与Python的集合不同,pandas的Index可以包含重复的标签。

Index的方法和属性:

1564035-20191007172018192-666790725.png

更多相关:

  • #!/usr/bin/env python # -*- coding:utf-8 -*- """ 系列(值的集合) DataFrame数据包(系列对象的集合) panel(数据文件对象的集合) 一个系列对象可以保存许多数据类型,包括 浮点数表示浮点数 表示整数值的 布尔布尔值表示布尔值 表示日期和时间,没有时区的 用日期时区表示日期...

  • 一、视图(Views)与 同义词   1、视图:实际上是对查询结果集的封装,视图本身不存储任何数据,所有的数据都存放在原来的表中;      在逻辑上可以把视图看作是一张表   2、作用: 封装查询语句,简化复杂的查询需求屏蔽表中的细节  3、语法:  create [or replace] view 视图的名称 as 查询语句...

  • explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 虽然这篇文章我写的很长,但看起来真的不会困啊,真的都是干货啊!!!! 先解析一条sql语句,看出现什么内容 EXPLAIN SELECT s.uid,s.username,s.name,f.email,f.mob...

  • 重建索引  如果表中记录频繁地被删除或插入,尽管表中的记录总量保持不变,索引空间的使用量会不断增加。虽然记录从索引中被删除,但是该记录索引项的使用空间不能被重新使用。因此,如果表变化不定,索引空间量会不断增加,不论表中记录数量是否增加,这是因为索引中无效空间会增加。 要回收那些曾被删除记录使用的空间,需要使用Alter index r...

  • 其实SQL能力很差劲,简单查询还成,复杂查询以及优化,基本脑子里没有概念。了解一下概念,然后打算找本理论书好好看看。 先到处找了些优化的sql,整理出来,记录一下。     1、对查询进行优化,应尽量避免全表扫描,首先应考虑在where 及order by 涉及的列上建立索引。     2、应尽量避免在where 子句中对字段进行n...

  • 原文地址:oracle索引的简单总结作者:kindle一、索引的概念:     数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。 二、索引的特点:     1.索引可以加快数据库的检索速度     2.索引降低...