pandas入门03---pandas基本功能

01 重建索引

reindex是pandas对象的重要方法。该方法用于建立一个符合新索引的新对象。数组

import pandas as pd

obj = pd.Series([4.5, 7.2, -5.3, 3.6],
		index=['d','b','a','c'])
print(obj)

Series调用reindex方法会按新索引从新排列。app

obj2 = obj.reindex(['a','b','c','d','e'])
print(obj2)

fill向前填充数据,bfill向后填充数据:dom

obj3 = pd.Series(['blue','purple','yellow'],
	index=[0, 2, 4])
print(obj3)
print(obj3.reindex(range(6),method='ffill'))

在DataFrame中,reindex方法的index关键字能够改变行索引,columns关键字能够改变列索引。函数

可使用loc进行简洁的标签索引。3d

02 轴向上删除条目

drop方法会返回一个含有指示值或轴向上删除值的新对象:code

obj = pd.Series(np.arange(5.),index=['a', 'b', 'c', 'd', 'e'])
print(obj)
new_obj = obj.drop('c')
print(new_obj)

在DataFrame中调用drop会删除行标签上的值,能够经过传递axis=1或者axis='columns'来从列中删除值,以下:对象

data = pd.DataFrame(np.arange(16).reshape((4, 4)),
			index=['Ohio', 'Colorado', 'Utah', 'New York'],
				columns=['one', 'two', 'three', 'four'])

print(data)
# 删除行标签
print(data.drop(['Colorado', 'Ohio']))
# 删除列标签
print(data.drop(['one','three'],axis=1))
print(data.drop('two',axis='columns'))

03 索引、选择与过滤

普通的Python切片是不包含尾部的,Series的切片包含。blog

DataFrame在行上的标签索引,可使用loc(轴标签)和iloc(整数标签)。排序

data1 = pd.DataFrame(np.arange(16).reshape((4, 4)), 
			index=['Ohio', 'Colorado', 'Utah', 'New York'],
				columns=['one', 'two', 'three', 'four'])

print(data1.loc['Colorado', ['two', 'three']])
print(data1.iloc[1, [1, 2]])

也可使用切片功能。索引

04 整数索引

为了保持一致性,若是你有一个包含整数的轴索引,数据选择时请始终使用标签索引。

05 算术和数据对齐

在没有交叠的标签位置上,内部数据对齐会产生缺失值。

在两个不一样的索引化对象之间进行算术操做时,可能会想要使用特殊值填充。 例如:有df1,df2两个数据,二者行或列不彻底相同,那么将二者添加到一块儿会致使在一些不重叠的位置出现NA值。

可使用df1.add(df2,fill_value=0)

这些出现NA值的地方会被以0填充。

表中是Series和DataFrame的算术方法,这些方法中的每个都有一个以r开头的副本,这些副本方法的参数是翻转的。

所以下面两个语句的结果相等:1/df1 等价于 df1.rdiv(1)

05 函数应用和映射

一般咱们须要将函数应用到一行或者一列的一维数组上。DataFrame的apply方法能够实现此功能:

frame = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['Utha', 'Ohio', 'Texas', 'Oregon'])
f = lambda x: x.max() - x.min()
# 会被列调用一次
print(frame.apply(f))

若是传递axis='columns'给apply函数,函数会被每行调用。

若是想操做DataFrame中的每一个元素可使用applymap方法。

06 排序和排名

若是须要按行、列索引进行字典排序,须要使用sort_index方法。该方法返回一个全新的,排序好的对象。

数据默认升序排序,可使ascending=False使数据降序。

若是要按Series的值进行排序,使用sort_values方法。

默认状况下,全部缺失值会被排序至Series的尾部。

当对DataFrame排序时,能够传递一个或多个列名给sort_values的可选参数by。

排名是指对数组从1至有效数据点总数分配名词的操做。rank经过将平均排名分配到每一个组来打破平级关系。

obj = pd.Series([7, -5, 7, 4, 2, 0, 4])
print(obj.rank())

排名也能够根据他们在数据中的观察顺序进行分配。

print(obj.rank(method='first'))

下表是可用的平级关系打破方法列表。

DataFrame能够对行或列计算排名。

07 含有重复标签的轴索引

obj = pd.Series(np.arange(5),index=['a', 'a', 'b', 'b', 'c'])
print(obj)

索引的is_unique属性能够告诉你它的标签是否惟一。

print(obj.index.is_unique)

带有重复索引的状况下,根据一个标签索引多个条目会返回一个序列,而单个条目会返回标量值。

这会使得代码更加复杂,由于来自索引的输出类型可能因标签是否重复而有所不一样。

相关文章
相关标签/搜索