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方法会按新索引重新排列。

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

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

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

在DataFrame中,reindex方法的index关键字可以改变行索引,columns关键字可以改变列索引。

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

02 轴向上删除条目

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

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的切片包含。

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)

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

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

转载于:https://my.oschina.net/u/3938912/blog/3102188

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值