快捷搜索:  汽车  科技

python进阶9-pandas的应用(Python基础之pandas库三)

python进阶9-pandas的应用(Python基础之pandas库三)df.sort_index(axis=0 ascending=True inplace=Ture)sort_index:对索引进行排序,包括横索引和竖索引,一般形式如下:DataFrame对象的数据结构是二维的,而二维数据常用到的操作是转置2.排序与排名Python3以上版本用的sort_index和sort_values方法对DataFrame对象数据进行排序

本系列内容所用Python版本为anaconda,直接浏览器搜索下载安装即可!


今天继续学习DataFrame对象的有关知识。

一、DataFrame对象的操作

1.转置

DataFrame对象的数据结构是二维的,而二维数据常用到的操作是转置

python进阶9-pandas的应用(Python基础之pandas库三)(1)

2.排序与排名

Python3以上版本用的sort_index和sort_values方法对DataFrame对象数据进行排序

sort_index:对索引进行排序,包括横索引和竖索引,一般形式如下:

df.sort_index(axis=0 ascending=True inplace=Ture)

该表达式仅列出了常用的参数,其中axis表示轴向,取0时表示横轴,即对行索引进行排序,取1时表示纵轴,ascending表示排序方式,True为升序,False表示降序,inplace表示是否复制备份进行排序操作,True表示不复制,在原df对象上操作,False表示复制备份进行操作,取False时需重新定义变量接收该排序操作的返回对象

对行索引排序

python进阶9-pandas的应用(Python基础之pandas库三)(2)

排序前:fia,排序后:afi

对列索引排序

python进阶9-pandas的应用(Python基础之pandas库三)(3)

排序前:Agd,排序后:Adg

降序排序

python进阶9-pandas的应用(Python基础之pandas库三)(4)

复制拷贝待排序对象

python进阶9-pandas的应用(Python基础之pandas库三)(5)

sort_values:值进行排序,一般形式如下:

df.sort_values(by= axis=0 ascendinf=True inplace=True)

该表达式的参数与sort_index的参数基本一致,不过多了个by参数,这个参数是指按哪个变变量的值排序(这里可以是列变量、也可以是横变量)

分别对行数据和列数据排序,需要注意的是当参数by取行变量时,axis参数要取1,当参数by取列变量时,axis参数要取0

python进阶9-pandas的应用(Python基础之pandas库三)(6)

对多列进行联合排序

python进阶9-pandas的应用(Python基础之pandas库三)(7)

联合排序的意思是当目标待排序变量有相同值时,按照第二变量进行排序,以确定待排序变量相同值的顺序,上述代码中,希望对A列的值升序排序,发现有两个2,于是对b中c、a对应的值进行降序排序,最终确定A列值的排序

sort_values中还有一个参数na_position,其表示缺失值的位置,取first时排在顺序前面,取last时排在顺序后面

python进阶9-pandas的应用(Python基础之pandas库三)(8)

对变量a的值降序排序,将缺失值排在顺序前面

值排名:rank函数

其中排名方式的参数取值有:first、min、max、average,举个例子,如果有一行数4 5 5 7 8 8,9,按照first参数排名则为1234567,按照min参数排名则为1224557,按照max参数排名则为1334667,按照average参数排名则为1、2.5、2.5、4、5.5、5.5、7

python进阶9-pandas的应用(Python基础之pandas库三)(9)

python进阶9-pandas的应用(Python基础之pandas库三)(10)

3.增加行或是列

对DataFrame对象添加一列

python进阶9-pandas的应用(Python基础之pandas库三)(11)

添加列时按照index对齐,没有的数字用nan填充

横向合并操作:concat方法

python进阶9-pandas的应用(Python基础之pandas库三)(12)

纵向合并操作:append方法

python进阶9-pandas的应用(Python基础之pandas库三)(13)

4.删除操作

删除行,drop()方法 参数为index包含的datetime时间对象

python进阶9-pandas的应用(Python基础之pandas库三)(14)

可以看出是复制操作,原DataFrme并没有改变

python进阶9-pandas的应用(Python基础之pandas库三)(15)

drop参数时index包含的datetime时间对象就行

删除列,drop()方法,参数为列索引变量,axis参数为1

python进阶9-pandas的应用(Python基础之pandas库三)(16)

在原DataFrame对象上直接操作,del方法

python进阶9-pandas的应用(Python基础之pandas库三)(17)

5.替换操作

有时我们需要对数据集中的数据进行替换,可以先找到需要替换的索引然后进行重新赋值

标签索引替换

python进阶9-pandas的应用(Python基础之pandas库三)(18)

位置索引替换

python进阶9-pandas的应用(Python基础之pandas库三)(19)

重置索引,如果对DataFrame对象调用reindex函数,将返回一个新的DataFrame对象,其index和columns是reindex的参数,如果新对象的索引或列名原对象中没有数据,则引入缺失值

python进阶9-pandas的应用(Python基础之pandas库三)(20)

一、DataFrame对象的运算

1.简单运算

在分析数据时,不可避免的要对两个数据集进行运算,而当两个数据集进行运算时,有两个不可避免的核心问题:一是数据之间如何匹配运算,二是如何处理不匹配的数据。我们知道pands中的两种数据结构Series和DataFrame的特点是index,其中后者还多了个columns,自然想两数据集运算时用index和columns匹配运算,用 、-、*、/来实现运算的话,Series和Series之间是index匹配运算,无法匹配的用nan填充,Series和DataFrame之间则是index和columns匹配运算,运算的方式是将DataFrame的每一行都与Serise进行运算,无法匹配的用nan填充,DataFrame和DataFrame运算时同时匹配index和columns运算,无法匹配的用nan填充

Series和Series之间的运算

python进阶9-pandas的应用(Python基础之pandas库三)(21)

python进阶9-pandas的应用(Python基础之pandas库三)(22)

匹配不到的index用nan填充

Series和DataFrame之间的运算

python进阶9-pandas的应用(Python基础之pandas库三)(23)

DataFrame的每一行都与Series匹配运算

DataFrame和DataFrame之间的运算

python进阶9-pandas的应用(Python基础之pandas库三)(24)

2.函数应用与映射

DataFrame是数据集,有时我们需要对数据的单独行或是列进行函数操作,肯定可以逐行或逐列分析,但未免太过繁琐,pandas包里有很简便的函数apply可以实现,及基本形式如下:

DataFrame.apply(func axis=0),其中func是对列或行应用的函数,axis表示对行还是列操作

python进阶9-pandas的应用(Python基础之pandas库三)(25)

pd.date_range方法可以生成datetime序列

也可以自定义函数

python进阶9-pandas的应用(Python基础之pandas库三)(26)

用lamda创建匿名函数

三、数据规整化

1.缺失值的处理

缺失值的判断

前面的数据运算中,由于匹配运算匹配机制,运算结果中可能会出现缺失值,为了后续计算我们就需要对缺失值进行处理,首先第一步就要判断缺失值

python进阶9-pandas的应用(Python基础之pandas库三)(27)

df6中存在缺失值

用isnull和notnull方法都可以判断缺失值,其中谴责缺失值返回True,后者返回False

python进阶9-pandas的应用(Python基础之pandas库三)(28)

选出不是缺失值的数据

python进阶9-pandas的应用(Python基础之pandas库三)(29)

选出了a列中的数据

缺失值的填充

有时候我们想用实际的值代替缺失值,这就需要用到pandas的填充函数

函数表达式为:DataFrame.fillna(value=none method=none axis=none inplace=False limit=none),其中value是缺失值位置填充值,可以是数值也可以是字符串,method是填充方式默认为none,也可以是ffill和pad或是bfill和backfill,其中ffill和pad是用行或列上一个观测值填充,bfill和backfill是用行或列下一个观测值填充,axis和method参数配合使用,limit意为最多连续填充几个数值,inplace则表示是否拷贝原对象进行操作,False拷贝,True不拷贝

python进阶9-pandas的应用(Python基础之pandas库三)(30)

全部用0填充

python进阶9-pandas的应用(Python基础之pandas库三)(31)

用上一行,上一列填充

python进阶9-pandas的应用(Python基础之pandas库三)(32)

用下一行、下一列填充

python进阶9-pandas的应用(Python基础之pandas库三)(33)

缺失值的选择删除

pandas提供了删除缺失值行或列的函数dropna 其一般表示形式如下:

DataFrame.drop(axis=0 how='all' thresh=none)

其中axis为0表示对有缺失值的行操作,为1表示对有缺失值的列操作,how为any指只要有缺失值就删除该行或列,为all则指全部为缺失值才删除,thresh则指明当趋势值个数超过参数时才删除

python进阶9-pandas的应用(Python基础之pandas库三)(34)

python进阶9-pandas的应用(Python基础之pandas库三)(35)

删除重复数据

DataFrame对象调用duplicated可以得到一个bool型的Series,表示个行是否是重复行

python进阶9-pandas的应用(Python基础之pandas库三)(36)

显然没有重复行

python进阶9-pandas的应用(Python基础之pandas库三)(37)

第二行跟第一行重复

移除重复行

python进阶9-pandas的应用(Python基础之pandas库三)(38)

上面的操作是基于所有列的,我们也可以对单独列判断是否重复

python进阶9-pandas的应用(Python基础之pandas库三)(39)

比较忙没有校对,有错误的地方还请担待,下次内容我们继续学习。

END

猜您喜欢: