1. 程式人生 > >DataFrame對行列的基本操作實戰

DataFrame對行列的基本操作實戰

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對行列的基本操作實戰