分享好友 行情首页 行情分类 切换频道
ch05-pandas入门
2024-12-27 01:53  浏览:90

pandas库是本书后续内容的首选库。它含有使数据分析工作变得更快更简单的高级数据结构和操作工具。pandas是基于NumPy构建的。让以NumPy为中心的应用变得更加简单

要使用pandas, 首先得熟悉它的两个主要数据结构:Series和DataFrame,虽然它们不能解决所有问题,但它们为大多数应用提供了一种可靠的、易于使用的基础

本文摘要

  • Series
  • DataFrame
    • 可以输入给DataFrame构造器的数据
  • 索引对象
  • 基本功能
    • 重新索引
  • 丢弃指定轴上的项
  • 索引、选取和过滤
    • 对DataFrame的索引选项(重要
  • 算数运算和数据对齐
    • 在算数方法中填充值
    • DataFrame和Series之前的运算
  • 函数应用和映射
    • 1.NumPy的ufuncs(元素级数组方法)也可用于操作pandas对象
    • 2.行列级自定义函数
    • 3.使用 applymap 而非 apply 就可以采用元素级别的方法
  • 排序和排名
    • Series排序
    • DataFrame排序
    • 对 Series 值的排序
    • 对DataFrame的行依据某个列的值进行排序
    • 排名
  • 带重复值的轴索引
  • 汇总和计算描述统计
  • 相关系数与协方差
  • 唯一值、值计数以及成员资格
    • 1.唯一值
    • 2.计数
    • 3.成员资格
  • 处理缺失数据
    • 1.滤除缺失数据
    • 2.填充缺失数据
  • 层次化索引

首先是常用和必要的引入

Series

Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及以一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series

它拥有一些性质

如果希望指定各个数据点的索引,可以将这个索引的数据作为第二个参数传入series函数中

这样就可以通过指定的索引值来访问具体数据

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

如下

既然如此,也可以通过字典来创建Series

已经建好一个Series之后,如果再次对这个Series调用Series方法,就可以从原来的内容中筛选出部分需要的数据
如下

pd 中的 isnul 和 notnull 可以直接用于检测Series中值是否为NULL

对于许多应用而言,Series的最重要的一个功能是:它在算术运算中会自动对齐不同索引的数据

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

Series的索引可以通过赋值的方式直接修改

DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引、它可以被看做由Series组成的字典(共用同一个索引
构建DataFrame的方法有很多,最常用的一种是直接传入一个由等长列表或NumPy数组组成的字典

结果DataFrame会自动加上索引,并且全部列会被有序排列

如果指定了列序列,则DataFrame的列就会按照指定的顺序进行排列

跟Series一样,如果传入的列在数据中找不到,就会产生NA值

类似于字典标记的方法或属性的方式,可以将DataFrame的列获取为一个Series
如下

对DataFrame的行也可以进行索引,比如用索引字段 ix

类似NumPy数组,也可以将列以赋值的方式进行修改

或者

将列表或者数组赋值给某个列时,其长度必须跟DataFrame的长度相等。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都会被填上缺失值

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

注意,以索引的方式返回的列只是相应数据的视图而已,不是副本。对返回的Series的任何就地修改全都会反映到源DataFrame上

另外一种创建DataFrame的方式是通过嵌套字典。这会被解释为:外层字典的键作为列,内层键作为索引

对已经建好的DataFrame的处理又多种多样了

由Series组成的字典类似

可以输入给DataFrame构造器的数据
  • 二维ndarray
  • 由数组、列表或元组组成的字典,每个序列变成DataFrame的一列。所有序列程度必须相同
  • NumPy的结构化/记录数组
  • 由Series组成的字典
  • 由字典组成的字典(前文中的嵌套字典

  • 如果设置了DataFrame的index和columns 的name属性,这些信息也会显示处理

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

索引对象

Pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index

访问方法与Series相似

但是Index对象是不可修改的(immutable,下面这条语句会导致

不可修改性非常重要,因为这样才能使Index对象在多个数据结构之间安全共享

除了长得像数组,Index的功能也类似一个固定大小的集合,也就是说可以通过类似 这样的方法访问

index的方法和属性

  • append
  • diff
  • intersection
  • union
  • isin
  • delete
  • unique 计算Index中的唯一值

基本功能

重新索引

pandas对象的一个重要方法就是重新索引,当某个索引值当前不存在,就引入缺失值

也可以指定值填充

对于时间序列这样的有序数据,重新索引时可能需要做一些差值处理,method方法可以达到此目的,比如下面的用后向值填充

此外reindex的(插值)method选项

  • ffill 前向填充
  • bfill 后向填充

对于DataFrame,reindex可以修改行索引,列索引,也可以两个都修改,如果只传入一个,则重新索引行

使用 ix 标签索引功能,重新索引任务变得更加简洁

reindex函数的参数

  • index
  • method
  • fill_value
  • limit
  • level
  • copy

丢弃指定轴上的项

先建立一个pandas结构

如果试图删除一个不存在的行或列,则会触发一个
删除一整行的元素可以直接用

如果希望删除一整列的元素,则需要增加一个的说明

索引、选取和过滤

对行元素的索引总是十分简单的,跟纯Python的数组和Series类似,不同的是,这里的切片是包含末端的(仅是对于用标签切片,用数字切片还是不包含末端的

先建立一个pandas结构

下面是索引的示例

使用前文中用到的data


这样看只是需要在调用drop方法的时候特别地标明 而在简单的索引的时候是可以直接索引到的

下面再展示一些其他的选取方法

ix 方法也很有意义

对DataFrame的索引选项(重要
  • obj [ val ] 选取DataFrame的单个列或一组列
  • obj.ix [ val ] 选取DataFrame的单个行或一组行
  • obj.ix [ :, val] 选取单个列或列子集
  • obj.ix [ val1, val2] 同时选取行或列
  • reindex 方法 将一个或多个轴匹配到新索引

总结,如果希望总是成功选取,建议使用 ix 方法

算数运算和数据对齐

pandas最重要的一个功能是,它可以对不同索引的对象进行算数运算。将对象相加时,如果存在不同的索引对,则结果的索引就是该索引对的并集

下面是一个例子,先建立两个Series

可见,重叠的项(都有的)值相加,不同的项,为NA值

如果在DataFrame,对齐操作会发生在行和列上

在算数方法中填充值

为了避免不重叠值会产生NA,可使用add方法,并且指定 fill_value = 0

灵活的算数方法

  • add
  • sub
  • div
  • mul
DataFrame和Series之前的运算

首先展示一个NumPy的广播

DataFrame的广播是类似的

如果希望匹配行且在行上广播,则必须要使用算数运算方法,如下

函数应用和映射

1.NumPy的ufuncs(元素级数组方法)也可用于操作pandas对象
2.行列级自定义函数

也可以对DataFrame采用自己定义的函数,默认是对列

增加 axis 说明可以方便地转化到对行操作

除了标量以外,传递给apply函数的还可以返回由多个值组成的Series

3.使用 applymap 而非 apply 就可以采用元素级别的方法

如下是一个将浮点数格式化为字符串的方法

排序和排名

Series排序

可以直接使用 sort_index()方法

DataFrame排序

默认对行进行排序

下面两个例子展示了如何通过更改传入参数,实现降序排序和按照列排序

对 Series 值的排序

这个地方采用书上的 order() 方法会出现错误,所以这里采用 sort_value() 方法

对DataFrame的行依据某个列的值进行排序

后面一种方法实现了先按照 ‘a’ 排序, 后按照 ‘ b’ 排序

排名

排名 rank 与排序相似,会增设一个排名值,从1开始一直数到数组中的有效值,这里可以看出,相同值对应的排名是相同的,但这不是简单的 “并列第几” ,而是 “为各组分配一个平均排名” 的方式来破坏平级关系

排名时用于破坏平级关系的method选项

ch05-pandas入门

带重复值的轴索引

截止目前,所有的范例都有唯一的轴标签(索引值,虽然许多pandas函数都有唯一标签值的要求,但是这并不是唯一的。

下面是一个例子

可以通过 方法判断标签是否唯一,当然先要取 index

汇总和计算描述统计

跟NumPy数组方法相比,pandas的统计方法,如都是适用于缺失数据的

用于查找最大的数

cumsum是用于计算累加值的

describe方法可以生成汇总统计

描述和汇总统计

  • count
  • describe
  • min、max
  • argmin、argmax
  • idmax
  • mean、median
  • var、std
  • 还有三阶矩等统计量…

相关系数与协方差

这部分安装包的时候出了点问题,暂时不写

唯一值、值计数以及成员资格

1.唯一值
2.计数

pd还有一个顶级方法也可以用于计数

3.成员资格

有时,你可能希望得到DataFrame中多个相关列的一张柱状图,可用如下方法

处理缺失数据

pandas使用浮点值NaN(Not a Number)表示浮点和非浮点数组中的缺失值。
检测可以通过方法,此外,Python内置的也会被当成NA处理

处理缺失数据有以下方法

  • dropna(根据标签的值中是否有缺失数据对轴标签进行过滤,可以通过调节阈值来调节对缺失值的容忍度
  • fillna
  • isnull
  • notnull
1.滤除缺失数据

筛选出非NA项

dropna默认的 how 参数是 ‘any’, 意为只要有NA,就丢弃全行数据

如果把 how 参数改为 ‘all’ 就可以仅删除全部都是NA的数据

如果希望对列进行操作,只要把 axis 参数改成 1 即可

2.填充缺失数据

首先建立一个有NA值的DataFrame

用字典的方式可以对不同的列用不同的值进行填充

fillna默认是返回新数组,但是也可以通过修改参数的方法,就地修改

此外还可以通过参数等方式,前向填充或者后向填充

fillna参数

  • value
  • method
  • axis
  • inplace
  • limit

层次化索引

层次化索引也是pandas的一项重要功能,它使你能够在一个轴上拥有多个索引级别


关于重新分级顺序、根据级别汇总统计、使用DataFrame的列、其他有关pandas的话题 在本文中省略

大功告成


疑惑
1.对DataFrame中某列组成的Series进行索引,如果直接访问单个元素会出错,访问一个切片的元素就没有问题切片

单个元素

得到

2.使用reindex同时重新索引行和列出错

得到


心得
看到函数应用与映射一部分,心里一颤,怎么可能这么好用。虽然还没有非常了解,但已经开始相信pandas将会在以后的数据处理工作中起到重要的作用

还差最后一个单元

    以上就是本篇文章【ch05-pandas入门】的全部内容了,欢迎阅览 ! 文章地址:http://w.yusign.com/quote/7075.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 述古往 http://w.yusign.com/mobile/ , 查看更多   
最新新闻
5G智能手机即将面世5g智能手机「5G智能手机即将面世」
  新华社北京12月7日电(记者高亢)中国移动董事长尚冰7日表示,中国移动将加快5G发展步伐,与产业链合作伙伴共同合作加快推进
Coolmuster Android Assistant(安卓助手) v4.2.85 官方安装版安卓手机助手「Coolmuster Android Assistant(安卓助手) v4.2.85 官方
Coolmuster Android Assistant(安卓助手)是一款Android设备的助手软件,旨在让您能够在Windows计算机上更好地管理Android数据,
5G智能手机关键组成技术——天线技术手机天线「5G智能手机关键组成技术——天线技术」
Labs 导读5G智能手机牵涉到整个产业链的技术升级,它和4G手机的区别在什么地方,哪些技术又会在5G智能手机的普及当中起到关键作
2025年哪款云手机便宜又好用?五大性价比云手机排行榜云手机排行「2025年哪款云手机便宜又好用?五大性价比云手机排行榜」
**一、云手机时代的来临**随着科技的飞速发展,云手机正逐渐走进大众的视野并成为一种新兴的智能设备使用方式。到了2025年,云手
1999回归?曾硬刚小米的手机,杀回来了魅族手机怎么样「1999回归?曾硬刚小米的手机,杀回来了」
啪的一下,很突然哈,魅族直接官宣下周要发新机了。这次的新机不是数字系列旗舰,而是魅族 21 Note。官方表示,新机搭载的是上代
5G、人工智能到底多重要?大咖们这么说5g智能手机「5G、人工智能到底多重要?大咖们这么说」
  央视网消息:11月7日,第五届世界互联网大会在浙江乌镇正式开幕。有关5G技术、人工智能、个人信息安全、互联网新趋势的讨论
A股收评:沪指缩量跌1.57%逼近3200点,全市场超4700只个股下跌
  A股三大指数今日集体收跌,截至收盘,沪指跌1.57%,深成指跌1.89%,创业板指跌2.16%,北证50指数跌0.17%。全市场成交额12822
2025西安北到武汉高铁经过哪些站,从西安北到武汉高铁火车最新消息
班次起点站终点站耗时方案1T308详情西安第三天 00:30武昌第三天 11:1210.7 小时途径点西安(起点)—南阳—信阳—孝感—武昌(终点)
本企业新闻
推荐企业新闻
发表评论
0评