pandas的数据结构
series
series是一种一维的数组对象,保护了一个值序列(与numpy类似),并包含了数据标签(index)。
不指定时,生成的默认索引是0到N-1。
附带索引的Series生成方法如下:
obj2=pd.Series([4,4,6,2],index=['d','t','g','u']
- 与numpy相比,Series的优点在于可以用标签进行索引。
- 同时,Series(以下简称Ss)相关的各类函数仍然保留了numpy函数的风格。
- 可以直接将python原生的字典格式生成Ss,方法为:obj=pd.###Series(dic)
如果同时定义传入Ss的字典和索引来生成Ss,则会自动在字典中搜索索引内的值并按索引顺序呈现,不存在值的会匹配为NaN
obj4=pd.Series(dict,index=['a','d','b','c'])#自动搜索字典中的abdc值
数据对齐 直接将两个Ss相加,会自动对齐索引,相同索引相加
- Ss有name属性(数据和index都有该属性)
- 索引可以通过赋值的方式尽心改变
DataFrame
矩阵形态的数据表,既有行索引也有列索引。
通常的,我们可以使用等长度的列表构成字典来生成df
data={'state':['ohio','ohio','Nevada'],
'year':[2000,2001,2003],
'pop':[1.5,1.7,1.9]}
frame=pd.DataFrame(data)
- DF中的一列就是一个Series
- 可以直接用df[‘debt’]=[1,2,43,5]来新增列
- 你可以将Series赋给df的一列,会根据索引自动编排,缺失值位置会显示NaN
通过其他列的判断来增加一列的方法很简单,如下:
frame['easten']=frame.state=='ohio'#找出state属性是Ohio的列该属性标1,其余为0
del frame[‘a’]可删除列
- df也可以接受嵌套字典的取值,此时会将内部字典的键作为行索引。
- df可以通过.T方法进行转置
总结
可以接收的有效输入类型:
- 2D ndarray
- 数组、列表、元组组成的字典
- numpy的结构化数组
- Series组成的字典
- 其他Df
索引对象
索引对象用于储存轴标签等元数据,是对象类型
- 索引对象 不可变 ,用户无法修改索引对象
- 与np不同,pd的索引可以包含重复标签
- 一些索引对象的方法和属性如下:
- append:粘贴到原来的索引后,产生新索引对象
- difference:求索引的差集
- intersection:求交集
- union:求并集
- delete:将i出的元素删除并产生新索引
- drop:根据传参删除指定索引值,并产生新索引
- insert:在i处插入元素产生新索引
基本功能
重建索引
reindex方法用来重建索引,这个函数用来 创建符合新索引的新对象 。
obj3.reindex(range(6),method='ffill'#表示无索引对应值时,前向插值
使用columns属性,可以修改为重建行索引
frame.reindex(columns=states)
轴向上删除条目
使用drop可以在轴向上删除其他元素,删除后返回一个新元素
new_ob=ob.drop('c')
new_ob2=ob.drop('two',axis='columns')#删除列
obj.drop('c',inplace=True)#在原对象上操作
索引、选择与过滤
Series的索引
索引可以通过以下方法实现
- obj[‘b’]:索引
- obj[1]:第二个元素
- obj[[‘a’,’b’,’c’]]:索引列表
- obj[obj<2]:判断条件
DF的索引
df的默认索引方式是按列进行的,如data[‘two’]是data数据中的two这一列
但是也存在特例,如data[:2]还是代表前两行。
data[data[‘three’]>5]仍然代表该列大于5的行。
df直接与标量值比较会得到一个bool值的df使用loc和iloc
loc指的是轴标签,iloc指的是整数标签
有博主详细讲述了loc和iloc的区别,如下:data.loc['colorado',['two','three']
data.iloc[2,[3,4]]
iloc主要使用数字来索引数据,而不能使用字符型的标签来索引数据。而loc则刚好相反,只能使用字符型标签来索引数据,不能使用数字来索引数据,不过有特殊情况,当数据框dataframe的行标签或者列标签为数字,loc就可以来其来索引。
更好的解释:
loc
works on labels in the index.(说白了就是标签索引)iloc
works on the positions in the index (so it only takes integers). (位置索引,和列表索引类似,里面只能是数字)
除了索引外,loc和iloc还可以用来切片。
ix索引是pandas开发初期为了解决选择一整列时比较复杂而将神奇索引功能放在了ix内的操作,这导致了整数轴标签数据被边缘化。因此,开发者并不希望继续使用ix功能。
df.at可以完成基于
上一篇:pandas
下一篇:matplotlib