DataFrame對行列的基本操作實戰
阿新 • • 發佈:2017-06-22
int32 from imp [1] object num 所有 col 三種
1、pandas對行列的基本操作命令:
import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data = DataFrame(np.arange(16).reshape(4,4),index=list(‘abcd‘),columns=list(‘wxyz‘)) data[‘w‘] #選擇表格中的‘w‘列,使用類字典屬性,返回的是Series類型 data.w #選擇表格中的‘w‘列,使用點屬性,返回的是Series類型 data[[‘w‘]] #選擇表格中的‘w‘列,返回的是DataFrame類型 data[[‘w‘,‘z‘]] #選擇表格中的‘w‘、‘z‘列 data[0:2] #返回第1行到第2行的所有行,前閉後開,包括前不包括後 data[1:2] #返回第2行,從0計,返回的是單行,通過有前後值的索引形式, #如果采用data[1]則報錯 data.ix[1:2] #返回第2行的第三種方法,返回的是DataFrame,跟data[1:2]同 data[‘a‘:‘b‘] #利用index值進行切片,返回的是**前閉後閉**的DataFrame, #即末端是包含的 data.irow(0) #取data的第一行 data.icol(0) #取data的第一列 data.head() #返回data的前幾行數據,默認為前五行,需要前十行則data.head(10) data.tail() #返回data的後幾行數據,默認為後五行,需要後十行則data.tail(10) ser.iget_value(0) #選取ser序列中的第一個 ser.iget_value(-1) #選取ser序列中的最後一個,這種軸索引包含索引器的series不能采用ser[-1]去獲取最後一個,這會引起歧義。 data.iloc[-1] #選取DataFrame最後一行,返回的是Series data.iloc[-1:] #選取DataFrame最後一行,返回的是DataFrame data.loc[‘a‘,[‘w‘,‘x‘]] #返回‘a’行‘w‘、‘x‘列,這種用於選取行索引列索引已知 data.iat[1,1] #選取第二行第二列,用於已知行、列位置的選取。
2、對列的操作實戰
import pandas as pd import numpy as np # 構建一個3*5的矩陣 data = pd.DataFrame(np.arange(1, 31, 2).reshape(3, 5), index=[‘one‘, ‘two‘, ‘three‘], columns=[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]) print(‘index‘, data.index) print(‘data‘, data) ‘‘‘ index Index([‘one‘, ‘two‘, ‘three‘], dtype=‘object‘) data a b c d e one 1 3 5 7 9 two 11 13 15 17 19 three 21 23 25 27 29 ‘‘‘ # 對列的操作如下: # 獲取某一列 col_a = data.get(‘a‘) col_a = data.a col_a = data[‘a‘] print(‘col_a‘, type(col_a), col_a) col_a = data[[‘a‘]] print(‘col_a‘, type(col_a), col_a) ‘‘‘ col_a <class ‘pandas.core.series.Series‘> one 1 two 11 three 21 Name: a, dtype: int32 col_a <class ‘pandas.core.frame.DataFrame‘> a one 1 two 11 three 21 ‘‘‘ cols = data.ix[:, [0, 1, 2]] # 不知道列名只知道列的位置 print("cols1",cols) cols = data.ix[1, [0]] # 選擇第2行第1列的值 print("cols2",type(cols), cols) cols = data.ix[1, 0] print("cols3",type(cols), cols) ‘‘‘ cols1 a b c one 1 3 5 two 11 13 15 three 21 23 25 cols2 <class ‘pandas.core.series.Series‘> a 11 Name: two, dtype: int32 cols3 <class ‘numpy.int32‘> 11 ‘‘‘ cols = data.ix[[1, 2], [0]] # 選擇第2,3行第1列的值 print("cols4",type(cols), cols) cols = data.ix[0:2, [0, 2]] # 選擇第1-2行第1、3列的值,不包括2行 print("cols5",type(cols), cols) cols = data.ix[1:2, 2:4] # 選擇第2-3行,3-5(不包括5)列的值 print("cols6",type(cols), cols) cols = data.ix[data.a > 5, 3] # 第1列中大於5所在的行第4列的值 print("cols7",type(cols), cols) ‘‘‘ cols4 <class ‘pandas.core.frame.DataFrame‘> a two 11 three 21 cols5 <class ‘pandas.core.frame.DataFrame‘> a c one 1 5 two 11 15 cols6 <class ‘pandas.core.frame.DataFrame‘> c d two 15 17 cols7 <class ‘pandas.core.series.Series‘> two 17 three 27 Name: d, dtype: int32 ‘‘‘ cols = data.ix[1:3,[‘a‘,‘b‘]] # 還可以行數或列數跟行名列名混著用 print("cols8",type(cols), cols) cols = data.ix[‘one‘:‘two‘,[0,1]] # 索引跟列用法類似,但包含開始、結束 print("cols9",type(cols), cols) cols = data.ix[[‘one‘,‘three‘],[2,2]] # 索引跟列用法類似 print("cols10",type(cols), cols) ‘‘‘ cols8 <class ‘pandas.core.frame.DataFrame‘> a b two 11 13 three 21 23 cols9 <class ‘pandas.core.frame.DataFrame‘> a b one 1 3 two 11 13 cols10 <class ‘pandas.core.frame.DataFrame‘> c c one 5 5 three 25 25 ‘‘‘
3、對行的操作實戰
# 對行的操作,對行操作必須采用切片的方式例如data[1:2],而不能data[1]或者data[‘one‘] rows = data.ix[1] # 獲取第1行,錯誤用法rows = data[1] # 獲取第1行 rows = data[1:2] # 獲取第1行,等價rows = data.ix[1:2] # 獲取第1行 print("rows1",type(rows), rows) rows = data[‘one‘:‘two‘] # 當用已知的行索引時為前閉後閉區間,這點與切片稍有不同。 print("rows2",type(rows), rows) ‘‘‘ rows1 <class ‘pandas.core.frame.DataFrame‘> a b c d e two 11 13 15 17 19 rows2 <class ‘pandas.core.frame.DataFrame‘> a b c d e one 1 3 5 7 9 two 11 13 15 17 19 ‘‘‘ #取DataFrame中最後一行,返回的是DataFrame類型,**註意**這種取法是有使用條件的, # 只有當行索引不是數字索引時才可以使用,否則可以選用`data[-1:]`--返回DataFrame類型 # 或`data.irow(-1)`--返回Series類型 rows = data.ix[-1:] print("rows3",type(rows), rows) rows = data[-1:] #跟上面一樣,取DataFrame中最後一行,返回的是DataFrame類型 print("rows4",type(rows), rows) ‘‘‘ rows3 <class ‘pandas.core.frame.DataFrame‘> a b c d e three 21 23 25 27 29 rows4 <class ‘pandas.core.frame.DataFrame‘> a b c d e three 21 23 25 27 29 ‘‘‘ rows = data.head(1) #返回DataFrame中的第一行 print("rows5",type(rows), rows) rows = data.tail(1) #返回DataFrame中的最後一行 print("rows6",type(rows), rows) ‘‘‘ rows5 <class ‘pandas.core.frame.DataFrame‘> a b c d e one 1 3 5 7 9 rows6 <class ‘pandas.core.frame.DataFrame‘> a b c d e three 21 23 25 27 29 ‘‘‘
DataFrame對行列的基本操作實戰