Serise,由index和values组成。
和Numpy一纬数组,的本质区别是索引:Numpy数组通过隐式定义的整数索引获取数值,而Pandas的Series对象用一种显式定义的索引与数值关联。
Series对象,直接定义索引名定义索引名的时候,可以是数字。
Series对象,还支持数组形式的操作比如切片。
创建Series时,用的是,字典,字典的键,就是Series的索引。但是后面如果有index指定字典里的键,以指定为准,没被指定的就不显示。
指定index=[x,y]
索引求值,series['str']/[i] i 为数字的话,还可以series['str':'str']切片
可以把series类比为带灵活索引的一维数组,df就是那个有灵活 行和列 索引的二维数组。
二维数组可以看成,有序排列的一维数组。
DF可以看成,有序排列的,若干series对象。这里的排列,指的是他们共同的索引。
两个属性,df. index df. columns
df["column_name"]获得的是列
二维数组中,data[0]获得的是行
指定index=[,,,,,]columns=[,,,,,]
data1=pd. DataFrame(data),后面生成的是,副本。需要重新赋值,修改data1与data无关联
df的index值不能修改
生成index对象,pd. Index()
试图修改df的index df的index不能修改
如果Series是显式 整数 索引。那么data[1]这样的取值操作会使用显式索引。而data[1:3]这样的切片操作却会使用隐式索引。
因为这样容易引起混淆,使用索引器(indexer)属性来作为取值的方法。他们不是Serise对象的函数方法,而是暴露切片接口的属性。data. loc[1]/[1:3],取值和切片都是显式的,data. iloc[1]/[1:3],取值和切片都是隐式的。全部是左闭右开。python代码设计原则就是,显式优于隐式。
data. iloc[0,::2]#取0行,开头到结尾跳2的列。
DF数据,可以通过data["column_name"]和属性形式data. column_name
data. values是一个二维数组,所以data. values[0]可以得到data第一行数据
在对DF数据进行,数组形式的取值时,可以通过loc,. iloc特别是iloc索引器,就可以像对待numpy数组一样索引pandas的底层数组(python的隐式索引),索引出来的结果,df的行列标签,会自动保留下来。
当两个Series或者Df对象进行二元计算时,pandas会在计算过程中对齐两个对象的索引。当处理不完整的数据时,对于缺失位置的数据,被填充NaN,表示,此处无数。结果数组的索引是两个输入数组索引的并集。不要空值,用fill_value=x这个参数定义缺失的数据。
通用函数:df与Series运算
df-df. iloc[0]行运算#用的运算符
df. subtrack(df['R'],axis=0)列运算,#用通用函数
Pandas Pandas Pandas以上三图解释,df数据和series运算操作的原则。
网友评论