数据摘要pandas
主要是用于分析数据的Pandas库
先学习两个数据类型DataFrame和series
进一步学习利用Pandas进行摘要的方法, 提取数据的特征
1 pandas库
1.1 pandas库
pandas库是处理和分析数据最好的库
提供高性能易用数据类型和分析工具
引用
import pandas as pd
Pandas基于NumPy实现, 常与NumPy和Matplotlib一同使用
示范小例
得到的Series数据, 左边的是索引, 右边的数据

Pandas有两个数据类型: Series(相当于一维数据类型)和DataFrame(二维到多维的数据类型)
基于上述数据类型的各类操作有:
基本操作, 运算操作, 特征类操作, 关联类操作
NumPy与Pandas的区别
NumPy: 基础数据类型; 关注数据结构(维度)的表达; 维度, 数据间关系
Pandas: 扩展数据类型; 关注数据的应用表达(提取, 运算); 数据与索引间关系
1.2 Series类型
Series类型由一组数据及与之相关的数据索引组成

Series数据类型的组成是索引+数据
如果不指定索引, 会自动生成索引, 是从0开始逐渐递增的序列
可以在生成Series的时候指定index来自定义索引
当指定索引的序列是第二个参数的时候, 可以直接输入序列, 不必写全 index=序列


可以通过别的数据来创建Series类型数据
列表, 标量值, 字典, ndarray, 其他函数
1) 从标量创建
使用标量创建所有的值都是该标量, index=不能省略

2) 从字典类型创建
如果不指定index, 那么字典的key就是Series的索引, value就是Series的值
如果指定index, 则Series的值会根据index的内容比对字典中的键, 查看键对应的值作为Series的值
如果index中的值不在字典中, 那么值就设为NaN
3) 从ndarray类型创建
所需要的ndarray必须是一个一维数组

4) 从ndarray中创建

1.3 Series类型的基本操作
Series类型是由索引和值组成
因而基本操作类似字典和ndarray的操作
1) 获得索引和值
Series数据.index 获得它对应的所有索引
Series数据.values 获得它对应的所有值
其中索引是object类型, 是一个专门的索引类型
值是numpy数据类型

2) 根据键获得值
Series数据[ 索引或者索引列表 ] (类似于字典的处理)
其中需要注意的是, 如果自定义了索引, 那么可以通过自定义索引来获得值, 亦可以通过原始索引(0,1,2...)获得值
获得多个值的时候可以在中括号中传入一个索引列表
但是注意, 索引列表中要么是自定义索引, 要么是原始索引, 不能混用

可以通过切片的方式获得值

同样基于字典的性质, 还可以使用关键字in和方法get等
关键字in判断的是自定义索引

利用numpy的处理来过滤数据

3) 对值的操作
Series数据采用随时修改立即生效
基本上都是通过索引来指定修改的值

由于Series数据的值是numpy的值, 因此同样可以使用numpy的操作来处理Series的数据

4) 对齐操作
还可以进行对齐操作 +
生成的结果是一个Series数据, 索引是所有索引的并集
只计算索引交集部分的值进行相加, 其余部分的索引对应的值为NaN

5) 对名字的操作
Series数据的数据对象本身和索引都有一个名字, 存储在 .name 中, 可以直接修改

1.4 DataFrame类型
DataFrame数据类型可以表示二维或者多维的数据, 但是由于在生产环境中, 大多都是二维数据, 因此先主要集中处理二维数据
DataFrame类型是由共用相同索引的一组列组成

实际二维数据可以看做是一个表格, 索引就是行头, 列的名字就是列头

1) DataFrame数据类型的创建
可以通过 二维ndarray对象; 由一组ndarray, 列表, 字典, 元组, Series构成的字典; Series数据, 其他DataFrame数据 构成
从ndarray创建
可以通过传入一个二维的ndarray数据来直接形成一个DataFrame数据

从一维ndarray对象字典创建
也可以传入一个一维的字典
DataFrame的处理是, 把字典的键作为列的索引值, 字典的值一般设置为Series数据, Series的值就是值, 索引就是整个DataFrame的索引
但是需要处理的是, 整个索引是各个Series值的索引的并集
如果涉及该索引没值的, 值设为NaN, 这个操作叫做 数据根据行列索引自动补齐

从列表类型的字典创建
道理和用以为的字典创建类似
只是由于字典的值仅仅只是列表, 没有二维信息, 所以需要在创建的时候, 加入index信息

2) 一些简单的操作
可以使用 .index .columns .values分别获取索引, 列名, 值的信息


获得一列的值可以直接使用 数据[列名]
获得一行的值需要使用 数据.ix[行名]
要获得具体的值只需要 数据[列名][行名] 或者 数据.ix[行名][列名]

1.5 数据类型操作
数据操作主要有两种
增加和重排: 解决办法是重新索引
删除: 使用的是drop
重新索引
使用 .reindex()能够改变或重排Series和DataFrame索引

.reindex(index=None, columns=None, …) 的参数

向前填充指的是, 当值为空时, 该值设为前面的值的值, 同理向后填充就是值设为后面的值的值
具体使用如下

索引类型
Series和DataFrame的索引是Index类型
Index对象是不可修改类型
对索引类型的常用方法

使用

要注意, 序号的是要顺序排列的, 新增的需要也需要按序新增, 不然对应的就是不能生成nd和新生成的一行是NaN
核心提醒, 对索引的操作实际上也是对数据的操作, 这点是pandas与numpy的区别, pandas引入对索引的处理让护具处理更加简便, 而numpy对数据的处理需要对数据维度进行控制管理
删除指定索引对象
.drop()能够删除Series和DataFrame指定行或列索引

drop()操作DataFrame数据的时候, 由于DataFrame有0轴和1轴, 默认是删除0轴的数据

1.6 数据类型运算
算数运算法则
算术运算根据行列索引,索引首先补齐后运算,不同索引之间不进行运算, 运算默认产生浮点数
补齐时缺项填充NaN (空值)
二维和一维、一维和零维间为广播运算
采用+ ‐ * /符号进行的二元运算产生新的对象
数据类型的算数运算
NaN与任何类型的数据进行运算都是NaN
关于行列补齐的标准解释: 小的缺少的部分都补全成一样大小的, 补全的值一般默认是NaN, 再进行运算

数据类型的方法形式的运算
使用方法形式的原因是因为可以有一些可选参数, 这些可选参数可以进一步扩展运算的功能


广播运算是逐个进行运算, Series数据与标量进行运算的时候, 是Series的每个值与该标量进行运算
DataFrame数据与Series数据进行运算, 是二维数据与一维数据进行运算, 其中默认情况是在轴1上进行运算
也就是说, 行的每个值对应的与Series的值对象进行运算
结论: DataFrame数据的1轴是一行, 0轴是一行的每一列的数据, 也就是如下的形式:


要想在二维与一维的数据进行运算, 需要使用方法的形式, 并且传入参数axis=0才能保证在每一列上运行
快捷的看法是, 默认轴1是先行后列, 轴0是先列后行

比较运算法则
比较运算只能比较相同索引的元素,不进行补齐
二维和一维、一维和零维间为广播运算
采用> < >= <= == !=等符号进行的二元运算产生布尔对象
数据类型的比较运算
特别注意, 维度相同的时候, 比较运算需要是两者是相同size的, 不同是无法运算的

当维度不同时, 也就是二维与一维的运算, 默认也是在轴1上运算

2 数据特征分析
2.1 数据的排序
一组数据的含义主要是看它表现的摘要
摘要, 将一组数据 有损的提取 数据特征的过程
摘要的形成的数据特征有: 基本统计(含排序); 分布/累计统计; 数据特征; 相关性、周期性等; 数据挖掘(形成知识)
1) 排序
pandas支持对索引的运算和对数据的运算两个方面, 对索引的运算采用sort_index方法, 对数据的运算采用的是.sort_values()方法
.sort_index() 指定轴上根据索引进行排序, 默认是升序
.sort_index(axis=0, ascending=True)
其中轴默认是0, 也就是对行名字进行排序, 轴设为1时, 对一行中的值进行排序
默认是升序为True, 降序为False


.sort_values()指定在轴上根据数值进行排序, 默认升序
Series.sort_values(axis=0, ascending=True)
DataFrame.sort_values(by, axis=0, ascending=True)
其中by指定行名字或者是列名字, 写入的是索引或者索引列表, 需要与axis配合使用
axis默认是0, 是列; 设为1时, 是行
ascending默认是True为升序; 设为False为降序

当值有NaN时, 排序会把它放到末尾

2.2 数据的基本统计分析
基本的统计分析函数
1) Series和DataFrame类型都可以使用的函数
Series数据只有0轴, 如果Series和DataFrame数据都可以使用, 那么默认的就是应该处理0轴

有一个可以囊括所有结果的函数describe()函数

具体使用实例
.describe()函数返回的结果是Series类型的数据, 所以可以通过Series数据的处理方式可以分析describe()的结果


2) 仅仅是Series类型使用的函数

2.3 数据的累计统计分析
累计统计分析就是对序列的前1~n个数进行一些累计运算, 这样可以减少一些for循环, 使得数据运算更加的灵活
1) 适用于Series和DataFrame类型, 用于累计计算, 默认也是0轴的运算

使用实例

2) 适用于Series和DataFrame类型, 滚动计算(窗口计算)

使用实例

2.4 数据的相关分析
相关分析
针对值X和Y, X的变化会引起Y的变化
当 X增大,Y增大,两个变量正相关
当 X增大,Y减小,两个变量负相关
当 X增大,Y无视,两个变量不相关
协方差
协方差>0 X和Y正相关
协方差<0 X和Y负相关
协方差=0 X和Y独立无关
但是协方差获得的相关性不是很精确, 有更多用于描述相关性的参数, 如Pearson相关系数
Pearson相关系数
计算公式

r的取值范围是[-1, 1]
取得r的绝对值:
当r在0.8-1.0 极强相关
当r在0.6-0.8 强相关
当r在0.4-0.6 中等程度相关
当r在0.2-0.4 弱相关
当r在0.0-0.2 极弱相关或者无相关
相关分析函数
适用于Series和DataFrame类型

数据摘要pandas的更多相关文章
- python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言)
python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言) 感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为 ...
- Python的工具包[1] -> pandas数据预处理 -> pandas 库及使用总结
pandas数据预处理 / pandas data pre-processing 目录 关于 pandas pandas 库 pandas 基本操作 pandas 计算 pandas 的 Series ...
- python 抓取金融数据,pandas进行数据分析并可视化系列 (一)
终于盼来了不是前言部分的前言,相当于杂谈,算得上闲扯,我觉得很多东西都是在闲扯中感悟的,比如需求这东西,一个人只有跟自己沟通好了,总结出某些东西了,才能更好的和别人去聊,去说. 今天这篇写的是明白需求 ...
- python 金融网贷数据,pandas进行数据分析并可视化系列 (词频统计,基本操作)
需求: 某某金融大亨想涉足金融网贷,想给网贷平台取一个名字,那么取什么名字,名字里面包含哪些关键字,在行业内的曝光率会相比较高一些呢? 可以理解为: 你负责某某网贷平台的网络推广工作,如何进一步优化各 ...
- 数据摘要 MD5
数据一样,摘要一样 (摘要即MD5) 摘要一样,数据一样 摘要是用于检验数据的完整性的技术(比如验证下载的东西是否完整,迅雷就是这样), 查看文件的MD5: Linux : md5 ...
- python 抓取数据,pandas进行数据分析并可视化展示
感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为半桶子水的水平,一直在想写什么,为什么写,怎么写. 直到现在找到了一种好的办法: 1.写什么 自己手上掌握的,工 ...
- 【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)
一.爬取老番茄B站数据 前几天开发了一个python爬虫脚本,成功爬取了B站李子柒的视频数据,共142个视频,17个字段,含: 视频标题,视频地址,视频上传时间,视频时长,是否合作视频,视频分区,弹幕 ...
- python大数据初探--pandas,numpy代码示例
import pandas as pd import numpy as np dates = pd.date_range(',periods=6) dates import pandas as pd ...
- 使用Python Pandas处理亿级数据
在数据分析领域,最热门的莫过于Python和R语言,此前有一篇文章<别老扯什么Hadoop了,你的数据根本不够大>指出:只有在超过5TB数据量的规模下,Hadoop才是一个合理的技术选择. ...
随机推荐
- Android ANR原理分析
一.概述 ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过 ...
- activiti自己定义流程之整合(二):使用angular js整合ueditor创建表单
基础环境搭建完成,接下来就该正式着手代码编写了,在说代码之前.我认为有必要先说明一下activit自己定义流程的操作. 抛开自己定义的表单不谈.通过之前的了解,我们知道一个新的流程開始.是在启动流程实 ...
- CString和string头文件
在使用了MFC库的工程中CString可以直接使用,在没有使用MFC库的工程中加入#include <atlstr.h> 要使用STL里的string,要加入#include <st ...
- basePath 方便
String path = request.getContextPath()+"/";String basePath = request.getScheme() + ": ...
- mysql存储过程之循环
链接: http://www.blogjava.net/rain1102/archive/2011/05/16/350301.html
- ubuntu14.04下CPU的caffe配置,不成功的朋友请与我(lee)联系,后面附带邮箱
因广大朋友需求cpu的caffe配置.所以我(lee)在这份博客中对cpu配置caffe做出对应操作说明.希望能够解决大家对cpu配置caffe的困惑.少走弯路. 假设有安装不成功的朋友能够和我联系, ...
- 【Bootstrap】一个兼容IE8、谷歌等主流浏览器的受众门户式风格页面
上一次写的<[Bootstrap]一个兼容IE8.谷歌等主流浏览器的受众巨幕式风格页面>(点击打开链接) 部分老一辈的需求可能对这样的后现代的风格并不惬意, 没关系,我们全然能够改变布局 ...
- 关于global和$GLOBALS[]的一道经典面试题
在不执行程序的情况下,你觉得的输出结果是什么? <?php $var1 = 1; $var2 = 2; function test(){ global $var1,$var2; $var2 = ...
- 监控系统-nagios
Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设备,打印机等.在系统或服务状态异常发出邮件或短信报警第一 ...
- cocos2dx3.2 学习笔记(2)--ActionManagerTest
前面看完了 CppTests的基本框架及流程.如今准备看看详细的每一个Test了 从哪里開始看呢. 额,就第一个吧(ActionManagerTest) 首先看看效果吧,执行了下.发现有几种效果.看不 ...