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)

帶有重複索引的狀況下,根據一個標籤索引多個條目會返回一個序列,而單個條目會返回標量值。

這會使得代碼更加複雜,由於來自索引的輸出類型可能因標籤是否重複而有所不一樣。

相關文章
相關標籤/搜索