Series和DataFrame、相关性及NaN处理

pandas核心数据结构

pandas是以numpy为基础的,还提供了一些额外的方法

Series

series用来表示一维数据结构,与python内部的数组类似,但多了一些额外的功能。

series内部由两个相互关联的数组组成:主数组用来存放数组,可以是numpy中的任意数据类型;另一个数组用来存放索引,索引默认从0开始。朱数组中每个元素又有一个与之关联的索引。

创建series对象

1、通过series的构造方法,参数为数组

通过参数index也可以指定索引

2、也可以通过传入ndarray创建series

注意:此时修改series中元素会对原ndarray有影响

3、还可以传入一个series对象,会返回一个新的series对象但仍指向同一地址

注意:此时修改series中的对象会对原series产生影响

4、可以传入空类型np.NaN对象

5、传入字典

在series的构造函数中传入一个字典,那么字典的key则为index,value为series的values元素

series对象的属性与方法

1、查看series的索引和值

2、series的长度

3、获取不重复的series

通过调用series对象的unique()方法返回一个无重复元素的series

4、统计重复元素出现的次数

series对象的value_counts()会返回一个统计了元素-次数的series

5、判断是否包含某些元素

isin()方法传入一个条件可以判断series是否包含某些元素,返回的是一个series

返回的布尔类型series传给原series可以进行筛选满足条件的元素

6、判断元素是否为null或非null

isnull()返回一个布尔类型的series

非空即调用notnull()方法

通过isnull()方法

7、获取最小最大值的索引

通过调用idxmin()与idxmax()

获取内部元素

支持使用从0开始的索引访问元素或指定索引值

同样series也支持切片

筛选元素

可以对series对象直接进行逻辑运算,但回返回一个布尔类型的series

通过传递布尔类型的series可以进行筛选元素

series的运算

1、series的运算是针对values中的每一个元素的

numpy提供了许多运算方法,都可以将series传入

2、多个series进行运算时,具有相同index的value会进行运算,若无相同idex,则该value的运算结果为NaN

DataFrame

DataFrame数据结构与关系型表格类似,是多维的series,它的"values"为colunms,即多列,每一列的数据类型可以不相同

创建DataFrame对象

1、传递一个字典对象给DataFrame的构造函数,dict的key为每一列的列名,value作为列元素

还可以指定字典中的部分kv对装载到dataframe中

自然也可以自定义行标签index

2、传入元素数组、index数组和列名数组

获取元素

1、通过columns属性查看列名

2、通过index属性查看行名

3、通过values属性获取元素

4、获取某一列的内容

用列名检索

若列名为字符串类型,可以直接通过以列名为属性获取

5、获取某一行的内容

通过DataFrame.icon[index]实现

 

还可以通过行名进行索引

 

索引多行在icon后传入列表即可

 

6、切分

同样dataframe底层为ndarray

7、获取某一值

需要指定两个维度,注意列名在前

dataframe为行列起名

index和columns默认名为空

dataframe相关操作

1、添加一列

一列即为一个series,所以可以直接传入一个series。注意series中的index需要与dataframe中的行名相同

2、判断是否包含某元素

与series相同,可以使用isin()方法,并获取符合条件的元素

3、删除某列

通过del()方法

4、支持逻辑运算符进行筛选

与series相同

5、行列交换

底层为二维ndarray,即矩阵,可转置。通过T属性

 

Index对象

index对象在series和dataframe中都十分重要,很多操作都是针对index对象进行优化

判断index是否唯一

通过index对象的is_unique属性判断

更换索引

通过series的reindex()方法可以交换原先索引位置,对于未出现过的索引名对应的元素为NaN

填充索引

若series对象中索引缺失了很多项,也可以通过reindex()来填充索引

1、method为ffill(forward fill),即向前填充。缺失的索引对应的元素为之前的第一个出现索引的值

2、bfill即backward fill,向后填充。缺失的索引对应的元素为之后的第一个出现索引的值

3、对于dataframe的reindex

同样可以对dataframe进行填充列

bfill为向后(右)填充,ffill为向左

删除索引

1、通过drop()方法删除索引,并返回删除的索引-值,会返回一个新的series

原series不会发生变化

2、dataframe中删除索引

同样返回一个新的dataframe

还可以删除列,通过指定axis=1

算数和数据对齐

1、相同数据结构之间的运算

两个series进行运算时,只有相同索引的元素才会进行运算

dataframe也是类似的,只有列名和index相同的元素才会运算

2、series和dataframe之间的与运算

实际上的df中的每一列与serise进行运算

若存在不共有的index,则该index对应的值为NaN

numpy函数应用与自定义函数

pandas是以numpy为基础的,ufunc就是经过扩展的通用函数,这类函数能够读数据结构中的元素进行操作

numpy中的函数

1、例如求平方根

可以直接通过numpy中的sqrt()方法,传入一个series或dataframe对象

2、统计函数

使用axis=0指定应用于列,axis=1指定应用于行

其他sum,max等函数皆可用

使用describe()函数可以查看所有统计量

自定义函数

自定义函数是对一维数组进行运算的,返回结构是一个数值。使用dataf或seri上的apply()方法应用自定义函数。针对每一行或每一列,使用axis=0指定应用于列,axis=1指定应用于行

1、dataframe上自定义函数求行或列的平方和

关于axis=1还是0:

2、使用lamdba表达式

series上自定义函数求平方可以直接写lambda表达式

3、自定义函数返回series

apply函数并不一定返回一个标量,也可以是一个series

例如求dataframe中每一行或每一列的最大值和最小值

Series和DataFrame的排序和排位

Series排序

1、按index排序

通过sort_index()方法,ascending为True则为升序。默认升序

2、按元素值排序

通过sort_values()方法。默认升序

dataframe排序

1、按索引排序

同上sort_index()。ascending默认为True,axis默认为0

2、按column排序

sort_index()中声明axis为1

3、列中按元素值排序

sort_index()中by指定需要排序的列

注意:sort_values()不支持同一行的排序

排位

排位指的是对元素值大小进行排序后返回在序列中的位置,比如从小到大排在第几位

1、Series的排位

通过rank()

2、DataFrame的排位

为series类似,但需要指明axis,0为每列排位,1位每行排位

 

相关性和协方差

相关性correlation和协方差covariance是两个重要的统计量,分别用corr()和cov()两个函数表示,用来度量两个对象的相关性。相关系数位于-1~1之间

相关系数为1:表示完全正相关

相关系统为0:表示完全不相关

相关系统为-1:表示完全正相关

这连个统计量通常涉及到两个series对象

相关性

1、series中的相关性

2、dataframe中每一列的相关性

dataframe中的相关性一般用来比较该df中的每一列与其他列之间的相关性

调用corr()方法得到的是一个矩阵

3、dataframe与series之间的相关性

dataframe相当于多维series,通过df对ser的相关性比较,实则是df中的每一列与series的比较

通过corrwith()方法实现

4、dataframe与dataframe之间的相关性

也是通过corrwith()方法,分别比较相同列名中的元素的相关性

可以在dataframe分别取出series互相比较

 

NaN的数据处理

1、创建NaN数据

在构造数据时,可以直接赋值NaN,即调用numpy的nan

构造series过程中为series的值赋值为nan

也可以None来赋值

2、删除NaN数据

若NaN在整个数据集中占比较小,可考虑直接删除

通过dropna()实现

在dataframe中需要指明axis,会删除含有NaN数据的一整行或一整列

还可以设置删除策略,在dropna()函数中how为'all'是整行或整列全为NaN时才会删除。默认为'any'

3、判断为空或非空

但最好在副本上进行删除,通过notnull()可以返回索引对应值是否为空的布尔类型series

判断为空则调用isnull(),可以筛选出为NaN的数据

4、填充空值

1、通过fillna()实现,传入参数表示填的值

2、还可以在fillna()中传入字典指定列名与填充值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pandas读写各种类型数据

read_X()通常是pandas模块下的,to_X()是dataframe的方法 CSV 读取 使用pandas.read_csv()方法,返回的是一个dataframe csv默认是以","分割的 csv文件内容 1、read_csv()默认以第一行数据作为标题 2、调用dataframe的head()方法…

python 类装饰器

1 装饰器无参数 class tracer: def __init__(self,func): self.calls 0 self.func func def __call__(self,*args): self.calls 1 print(call %s to %s %(self.calls, self.func.__name__)) self.func(*args) tracer def spam(a, b, c): print(a b c) …

【数据分析】使用pandas和numpy分析美国大选献金项目

1. 数据载入与总览 1.1 数据加载 #绘图工具 import matplotlib.pyplot as plt %matplotlib inline #数据处理工具 import numpy as np import pandas as pd from pandas import Series,DataFrame#数据路径自己指定,本案例数据路径就在当前文件夹下面子文件夹usa_e…

《容器技术系列》一1.4 Docker运行案例分析

本节书摘来华章计算机《容器技术系列》一书中的第1章 ,第1.4节,孙宏亮 著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.4 Docker运行案例分析 1.3节着重介绍了Docker架构中各个模块的功能,学完后我们可以对Docker的架构有一…

3月22日AM

看了思维章节精讲视频课,并且总结了部分思维章节内容转载于:https://www.cnblogs.com/bgd140206102/p/6601440.html

阿里巴巴Dubbo实现的源码分析

Dubbo概述Dubbo是阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及作为SOA服务治理的方案。它的核心功能包括: remoting:远程通讯基础,提供对多种NIO框架抽象封装,包括“同步…

H264 CAVLC 研究

目录 1 CAVLC概念 2 CAVLC原理 3 CAVLC编码流程 4 CAVLC解码流程 展开全部 1 CAVLC概念 2 CAVLC原理 3 CAVLC编码流程 4 CAVLC解码流程 收起 摘要纠错编辑摘要 CAVLC即基于上下文的自适应变长编码。H.264标准中使用CAVLC对4*4模块的亮度和色度残差数据进行编码。 CAVLC-CAVLC…

instanceof 的运用

2019独角兽企业重金招聘Python工程师标准>>> Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。 用法: result object i…

R 脚本读取汇总 Excel 表格数据

主要用到了 xlsx 和 rJava 包,打开 Excel 文件,读取各表格数据,再写入到汇总表。 下图为处理前的原始数据表格: 下图为处理后的数据: 代码实现 安装&加载包的函数实现。installed.packages() 函数获取所有已安装…

【大数据】最新大数据学习路线(完整详细版,含整套教程)

大数据学习路线 java(Java se,javaweb) Linux(shell,高并发架构,lucene,solr) Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume) 机器学习(R,mahout) Storm(Storm,kafka,redis) Spark(scala,spark,spark core,spark sql,spark streaming,spark mllib,spa…

谷歌浏览器开发调试工具中Sources面板 js调试等 完全介绍

这次分享的是Chrome开发工具中最有用的面板Sources。 Sources面板几乎是我最常用到的Chrome功能面板,也是在我看来决解一般问题的主要功能面板。通常只要是开发遇到了js报错或者其他代码问题,在审视一遍自己的代码而一无所获之后,我首先就会打…

【Python】最新Python学习路线(完整详细版,含整套教程)

python目前应用最广的三个岗位:全栈开发、数据分析、运维开发,今天我们就以这三个重点的岗位来做一下自学Python的规划,希望你在学之前就能有明确的学习方向。 最近开始整理python的资料,博主建立了一个qq群,希望给大家…

程序员,软件测试知多少?

送给初级程序员的测试认知文作为开发同学,一些基本的测试岗位相关知识还是很有必要了解一下,免的某些同学在工作中和测试同学斗嘴、打架、群殴等以及被测试鄙视....。 我们常常听说的一些测试专业术语,比如白盒、黑盒、单元测试,相…

vue 入门环境搭建

公司项目要用vue.js来开发,要使用vue来开发前端框架,首先要有环境,所以给大家介绍一下如何搭建vue环境。其实很简单: 1.首先下载安装node.js。 去官网https://nodejs.org/zh-cn/下载安装包。 2.安装webpack 打开cmd命令界面&#…

【解决】Win10修改host没有权限问题

Step1:右键文件选择属性,选择安全,点击编辑: Step2:在弹窗中点击添加,在弹窗中点击高级: Step3:在弹窗中点击立即查找,选中当前用户,点击确定: …

[已授权] 互联网定位技术小谈

​ 诚邀阿里云先知社区邀请,不胜感激!今日小编在此为大家介绍一下互联网中所应用的定位技术。互联网的发展日新月异,技术迭代很快,各行各业的智慧在互联网这片蓝天下碰撞结晶,造福大众。今天要讲述的集中定位方式&…

Python的DataFrame切片大全(包含多重索引)

码字不易,喜欢请点赞!!! 摘要 这篇主要讲解如何对pandas的DataFrame进行切片,包括取某行、某列、某几行、某几列、以及多重索引的取数方法。 • 选取行名、列名、值 • 以标签(行、列的名字)…

什么是数据分析的关键指标?

什么是核心关键指标呢? 这是一个好问题,不过没有标准的答案。企业性质不同,所处行业、发展阶段不同,关注点当然不同。不过大体可以这样来划分。 1、发展阶段不同,需求不同 对于一个想要做数据化管理的企业来说&#xf…

加密函数

MD5:密码为web页面做准备,建议使用MD5 PASSWORD() :修改当前用户或其他用户密码 mysql> SELECT MD5(admin); #对admin进行MD5的加密(32位)----------------------------------| MD5(admin) |--------------------------------…

如何使用notepad运行python程序

关于使用notepad运行python程序 首先要确保python解释器已经安装成功,查看方法,windows可以在命令提示符中查看,通过按下winR键,调出运行窗口,在输入框中输入cmd回车,然后在命令行中输入python,若出现版本信息,例如Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC…