python3(四)Pandas库

2023-11-20

数据摘要pandas

 

正文

主要是用于分析数据的Pandas库

先学习两个数据类型DataFrameseries

进一步学习利用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()能够删除SeriesDataFrame指定行或列索引

    

    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) 适用于SeriesDataFrame类型, 用于累计计算, 默认也是0轴的运算

  

  使用实例

  

  2) 适用于SeriesDataFrame类型, 滚动计算(窗口计算)

  

  使用实例

  

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 极弱相关或者无相关

  相关分析函数

    适用于SeriesDataFrame类型

    

分类: 数据分析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3(四)Pandas库 的相关文章

  • Python3 goto 语句的使用

    熟悉 C 语言的小伙伴一定对 goto 语句不陌生 它可以在代码之间随意的跳来跳去 但是好多老鸟都告诫大家 不要使用 goto 因为 goto 会使你的代码逻辑变的极其混乱 但是有时候我们不得不用它 因为它太高效了 比如进入循环内部深层一个
  • 【python 6】Numpy

    文章目录 一 创建ndarry 1 使用 np array 由 python list 创建 2 使用np的常规函数创建 二 ndarry 的属性 三 ndarry 的基本操作 四 ndarry 的矩阵操作 Numpy 是python的数值
  • python如何读取文件夹下的子文件夹

    import os 创建文件夹 def mkdir path if os path exists path False os mkdir path else pass 根目录 root path C Users man wang Deskt
  • python 如何将代码中的输入保存到txt里边

    一 在 print 前建立一个txt python3 f open print txt w print this is a txt file f f close python2 f open print txt w print gt gt
  • 深度之眼(一)绪论和环境配置

    1 课程目标 缺乏语言基础 语言不够简洁 逻辑性差 规范性差 代码冗长 高效 解决相同问题 代码用时更长 占用内存更多 和强壮 容错性能差 知识体系不够完整 平时学习到知识点比较分散 用到了才去学习 人工智能和网络爬虫是python应用最多
  • python数组(矩阵)乘法(点乘、叉乘)

    转载 https blog csdn net haiziccc article details 101361583 总结 1 tf matmul A C np dot A C A C都属于叉乘 而tf multiply A C A C A
  • 【python 1】python 基础

    文章目录 一 格式化输出 1 占位符 2 拼接输出 3 message 输出 4 format 输出 二 input 输入 三 pass break 四 字符串 五 列表 六 元组 七 字典 八 集合 一 格式化输出 1 占位符 s str
  • Python处理大数据,如何提高处理速度

    Python处理大数据 如何提高处理速度 一 利用大数据分析工具 Dask https dask org Dask简介 Dask支持Pandas的DataFrame和NumpyArray的数据结构 并且既可在本地计算机上运行 也可以扩展到在
  • python3(十一)内置模块和类型转换

    内置模块 不用import就可以直接使用 常用内置函数 命令 作用 help obj 在线帮助 obj可是任何类型 callable obj 查看一个obj是不是可以像函数一样调用 repr obj 得到obj的表示字符串 可以利用这个字符
  • python-绘制双轴柱状图

    转载 https blog csdn net weixin 42749944 article details 115026810 df pd read excel r file xlsx fig ax1 plt subplots width
  • Python 实现简单的自定义异常类型

    usr bin env python import os socket errno types tempfile class NetworkError IOError pass class FileError IOError pass de
  • GDAL教程——Geotransform

    教程参考链接 非常好的学习资料 https gdal org tutorials geotransforms tut html 1 geotransform 函数 地理变换函数 地理变换是从图像坐标空间 行 列 也称为 像素 线 到地理引用
  • python eclipse+pydev(An error has occurred when creating this preference page)

    Eclipse 安装pydev Help gt Install New Software gt add gt Location http pydev org updates 点击pydev左边的小三角勾选pydev for eclipse
  • python实现将给定列表划分为元素和大致相等的两个子列表

    假设现有列表 300 150 75 38 19 9 5 2 我想把它划分为两个子列表 并要求两个列表的元素和大致相等 应该如何做 这是一个很有意思的问题 我们期待的答案应该是 list1 300 list2 150 75 38 19 9 5
  • python3(六)监督学习

    监督学习 目录 1 监督学习 2 分类 2 1 人体运动信息评级实例 2 2 基本分类模型 2 3 运动状态程序 3 回归 3 1 线性回归 正文 回到顶部 1 监督学习 利用一组带标签的数据 学习从输入到输出的
  • pandas DataFrame数据的合并与拼接

    转发 Python pandas DataFrame数据的合并与拼接 merge join concat 总结得很全面 比如将一个文件夹下所有文件合并 merge import os import pandas as pd file lis
  • python No module named numpy. distutils._msvccompiler in numpy. distutils; trying from distutils

    在cmd 中输入 python setup py install 报错 No module named numpy distutils msvccompiler in numpy distutils trying from distutil
  • Python 装饰器深入解析

    1 什么是装饰器 装饰器是给现有的模块增添新的小功能 可以对原函数进行功能扩展 而且还不需要修改原函数的内容 也不需要修改原函数的调用 1 1 装饰器的使用符合了面向对象编程的开放封闭原则 开放封闭原则主要体现在两个方面 对扩展开放 意味着
  • seaborn分类数据的绘制

    转载 seaborn分类数据的绘制https zhuanlan zhihu com p 27683042 总结很全的资料
  • glob.glob in python

    reference glob glob in python 功能 返回一个某一种文件夹下面的某一类型文件路径列表

随机推荐

  • elasticsearch ES搜索权重设置(boost参数)

    摘要 7 Elasticsearch boost的搜索条件权重 lm324114的专栏 CSDN博客 boost es 摘要2 elasticsearch boost 简书 摘要3 Elasticsearch 10 Boost 提升权重 简
  • flutter ListView 滚动到最后一个items位置

    flutter 想要实现一个listview初始化时和数据变化后显示到列表的最末 简单地说就是像聊天窗或者是日志输出那样的情景 要在Flutter中实现在初始化时和数据变化后将ListView自动定位到最后一个item的位置 你可以使用Sc
  • 基于位置的 AR 应用程序开发最完整指南

    几年前 全世界都为 Pokemon Go 疯狂 虽然这款游戏令人难以置信的受欢迎程度正在缓慢下降 但增强现实已成为科技界的新趋势 并且正在自信地抢占市场份额 2020年 AR市场规模超过141亿美元 预计到2022年底将达到2092亿美元
  • 混合式A星代码解析_2 规划主程序Planner.cpp

    3 规划程序 Planner cpp 在main cpp中 起主要作用的就是 HybridAStar Planner hy hy plan 规划算法都是在HybridAStar Planner这个类内部进行运算的 所以主要分析以下Plann
  • 客户端html跳到cas登出页面,CAS单点登录:单点登出及自定义登出界面(六)

    1 单点登出 1 1 参数说明 配置单点登出 配置允许登出后跳转到指定页面 cas logout followServiceRedirects false 跳转到指定页面需要的参数名为 service cas logout redirect
  • 扫描二维码进入体验版小程序却一直进入线上版本?这个配置要注意!

    1 前期准备 服务器 域名 2 配置扫描普通二维码进入小程序页面 开发小程序过程中 我们会遇到很多不同的场景 其中 扫描普通二维码进入小程序就是其中之一 下面先来看下如何配置扫描普通二维码进入小程序 首先登录开发平台 打开开发管理 进入开发
  • 大端小端,LSB和MSB

    在verilog中碰到了lsb和msb 所以做一下解释 lsb 就是最低位有效 类似于wire 0 31 这样的顺序 msb 就是最高位有效 类似于wire 31 0 这样的顺序 还有计算机中还有大端小端的概念一块解释一下 举例 0X123
  • 2022/9/6小结

    成长 是一个探索自我的过程 看 了不起的我 这本书 不知道是那句话 那个段落 或者那一章触动到了我 曾经我无法发自内心地去读书 去感受书中的情感 或悲伤 或喜悦 曾经我迫切地想通过书籍获得一项技能 获得一种读书人的气质 很幼稚 我不是在读书
  • Linux绑核效率优化

    Linux绑核效率优化 原理概述 cpu一般有多个物理核心 但在运行进程和线程时候 可以将其绑定或者指定到某一个或者多个核心上运行 这样做的好处是 一般在核数比较多的机器上 会有多个CPU共享三级缓存cache的情况 当出现跨cache数据
  • electron创建新窗口(模态框)并相互传值,主进程传值给子进程

    我们在开发的过程中难免会遇到需要创建一个子窗口 子进程 但是在这个子进程中所有值都是初始化的 而我们肯定是需要一些值才能进行下一步操作 比如 token 那么我们怎么去传递值呢 我先给伙伴们说一些 基本原理 下面很多东西会建立在vue的基础
  • line-height: 1

    价格文字 问题 新价格 旧价格 每个都设置了自己的line height 结果就是 新价格 旧价格 的底部没有与父元素 div 贴底 样式调试起来很难 解决办法 新价格 旧价格 的 line height 都设置为 1 成功
  • chrony配置服务器时间同步

    chrony 设置时区 timedatectl set timezone Asia Shanghai 查看时区 timedatectl date R 设置时间 date s 20211109 11 32 30 时区和时间配置好之后 配置ch
  • STM32--IIC

    1 IIC总线协议介绍 IIC Inter Integrated Circuit 集成电路总线 是一种同步串行半双工通信总线 IIC总线结构图 由时钟线SCL和数据线SDA组成 并且都接上拉电阻 确保总线空闲状态为高电平 总线支持多设备连接
  • antd + react model自定义footer_阿里开源可插拔的企业级React应用框架——UmiJS

    介绍 UmiJS 五米 是阿里开源的可插拔企业级React应用框架 为什么说是可插拔 是因为它的整个生命周期都是插件化的其内部也有很多都是通过插件来实现的 其中大家熟知的Ant Design pro就是基于umi构建的 官方文档 中文文档
  • Zabbix安装部署(国内源镜像)----一次性解决centos7安装zabbix报错:[Errno 256] 的问题

    Zabbix安装部署 环境准备 OS CentOS 7 安装步骤 一 关闭selinux和iptables root localhost systemctl stop firewalld service root localhost set
  • 相关性分析p值_相关性分析的结果解读及说明

    下图是三个不同的变量 Y 分别与变量X的相关性分析结果 1 相关系数r r 1 二者具有完美的正相关 r 0到1之间 两个变量一起增加或者一起减少 r 0 二者没有相关性 r 1到0 一个变量随着另一个变量的增加而减少 或者减少而增加 r
  • Feign客户端 - 超时时间配置

    Spring Cloud 专栏收录该内容 7 篇文章0 订阅 订阅专栏 Spring Cloud中Feign客户端是默认开启支持Ribbon的 最重要的两个超时就是连接超时ConnectTimeout和读超时ReadTimeout 在默认情
  • vue3前端以json样式输入组件实现

    在 Vue 3 中 你可以创建一个组件 让用户输入 JSON 并将这个 JSON 渲染成某种样式或结构 以下是一个简单示例 它涵盖了如何在 Vue 3 中创建一个接受 JSON 输入并呈现其内容的组件 Setup Vue Project 如
  • IO多路复用

    1 IO模型 IO模型是指四种不同的文件读写方式 1 阻塞IO 阻塞IO是最常用 最简单 效率最低的一种IO模型 阻塞读 如果有数据可读 则直接读取数据 如果没有数据可读 则读会阻塞 直到读取到数据 或 出错才返回 阻塞写 如果有空间可供写
  • python3(四)Pandas库

    数据摘要pandas 目录 1 pandas库 1 1 pandas库 1 2 Series类型 1 3 Series类型的基本操作 1 4 DataFrame类型 1 5 数据类型操作 1 6 数据类型运算 2 数据特征分析 2 1 数据