学习目标:
python学习三十二—简单的数据分析
学习内容:
1、pandas的数据结构
2、pandas数据分析和数据处理的基本功能
3 、汇总和计算描述统计
- pandas是含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具。pandas经常和其它工具一同使用,如数值计算工具NumPy和SciPy,分析库statsmodels和scikit-learn,和数据可视化库matplotlib。pandas是基于NumPy数组构建的,特别是基于数组的函数和不使用for循环的数据处理 - pandas采用了大量的NumPy编码风格,但二者最大的不同是pandas是专门为处理表格和混杂数据设计的。而NumPy更适合处理统一的数值数组数据
1、pandas的数据结构
- 主要数据结构为大多数应用提供了一种可靠的、易于使用的基础:Series、DataFrame
1、Series
- Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成
Series的字符串表现形式为:索引在左边,值在右边,默认索引是0到N-1(N为数据的长度)

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

通过索引选取Series中的值

pandas相关的计算,会保留索引

可以将Series看成一个定长有序字典,Series是一个索引值对应一个数据值,可以用在原本需要字典参数的函数中
sdata中跟statas索引相匹配的那3个值会被找出来并放到相应的位置上,"California"所对应的sdata值找不到,其结果就为NaN(即“非数字”(not > a number),pandas中,NaN用于表示缺失或NA值)。‘Utah’不在states中,从结果中除去

- pandas的isnull和notnull函数可用于检测缺失数据
用缺失(missing)或NA表示缺失数据

Series检查数据是否确实的方法

- Series最重要的一个功能根据运算的索引标签自动对齐数据

- Series 的name属性、通过赋值的方式修改索引

2、DataFrame
- DataFrame是一个表格型的数据结构,含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)
- DataFrame既有行索引也有列索引,可以被看做由Series组成的字典(共用同一个索引)
- DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)
- DataFrame是以二维结构保存数据的,但仍然可以轻松地将其表示为更高维度的数据(层次化索引的表格型结构,这是pandas中许多高级数据处理功能的关键要素)
- 常用直接传入一个等长列表或Numpy数组的字典组成DataFrame

- 利用字典指定columns排序,以及设定index创建DataFrame
传入的columns在字典中找不到就会产生缺失值

- 通过赋值的方式对DataFrame的列进行修改
- 将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配
- 赋值的是一个Series,要精确匹配DataFrame的索引

- 关键字del删除列(columns)
不能用frame2.eastern创建新的列

- 嵌套字典创建DataFrame,外层字典的键作为列,内层键则作为行索引


- DataFrame的index和columns的name属性,以及value属性
DataFrame各列的数据类型不同,则值数组的dtype就会选用能兼容所有列的数据类型

3、索引对象(index)
- pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)
- 构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index
- Index对象是不可变的
- Index对象在多个数据结构之间安全共享

- index对象类似于固定大小的集合

2、pandas数据分析和数据处理的基本功能
- 操作Series和DataFrame中的数据的基本手段
1、重新索引
- reindex方法:创建一个新对象,它的数据符合新的索引

- method方法:当重新索引时插入一些值

- reindex和DataFrame连用时可以修改(行)索引和列

2、丢弃指定轴上的项
- drop方法:删除指定轴上的指定值,并返回一个新对象
Series上的drop方法:
DataFrame上的drop方法:
- 许多函数,;比如drop,会修改Series或DataFrame的大小或形状,可以就地修改对象,不会返回新的对象

3、索引、选取和过滤
- Series的索引类似于Numpy,但是Series的索引不是整数

利用切片对Series赋值:
- DataFrame的索引,一个值对应一列或者序列对应多个列

布尔型DataFrame(比如下面这个由标量比较运算得出的)进行索引:
4、用loc和iloc进行选取
- 对于DataFrame的行的标签索引,特殊的标签运算符loc和iloc,类似NumPy的标记,使用轴标签(loc)或整数索引(iloc),从DataFrame选择行和列的子集

- loc和iloc进行选取

5、整数索引
6、算术运算和数据对齐
- pandas最重要的一个功能可以对不同索引的对象进行算术运算
Series的算术运算和数据对齐:
DataFrame的算术运算和数据对齐:
对齐操作会同时发生在行和列上
7、在算术方法中填充值
- 当一个对象中某个轴标签在另一个对象中找不到时填充一个特殊值(比如0)

- add方法
Series和DataFrame的算术方法

8、DataFrame和Series之间的运算
- 匹配行且在列上广播

9、函数应用和映射
- NumPy的ufuncs(元素级数组方法)也可用于操作pandas对象

一般数据统计的方法用DataFrame的方法(sum、mean等)
- 传递到apply的函数不是必须返回一个标量,还可以返回一个Series

10、排序和排名
- 根据条件对数据进行排序

- 在排序时,任何缺失值默认都会被放到Series的末尾

- 根据列中一个或者多个值对dataframe排序

- rank方法:rank是通过“为各组分配一个平均排名”的方式破坏平级关系的(索引是从)

Series的rank方法
DataFrame的rank方法
11、带有重复标签的轴索引
- 重复索引值的Series

3 、汇总和计算描述统计
1、 pandas对象基于没有缺失数据从series中提取sum、mean,从dataframe的行或列提取series进行数学计算和统计


- 返回间接统计、累计型、既不是约简型也不是累计型

- 非数值型数据,describe会产生另外一种汇总统计

2、相关系数与协方差
- 有些汇总统计(如相关系数和协方差)是通过参数对计算出来的
3、唯一值、值计数以及成员资格



