1. 程式人生 > >pandas系列之 DataFrame 行列資料篩選

pandas系列之 DataFrame 行列資料篩選

一、對DataFrame的認知
DataFrame的本質是行(index)列(column)索引+多列資料。

為了簡化理解,我們不妨換個思路…

現實中,為了簡化對一件事物的描述,我們會選擇幾個特徵。
例如,從(性別、身高、學歷、職業、愛好..)等角度去刻畫一個人,這些“角度”即為“特徵”。

這裡寫圖片描述

其中,不同的行表示不同的記錄;列代表特徵,不同記錄因各個特徵之間的差異而不同。

DataFrame預設索引是序號(0,1,2…),可以理解成位置索引。一般我們用id標識不同記錄,不會改變index。但為了理解不同特徵(列)含義,我們往往會重新指定column。

一些簡易但不算嚴謹的理解是:
行列


行 – index – 記錄 (一般沿用預設索引)
列 – column – 特徵 (自定義索引)
索引
預設索引 – 序號 – 位置 – 方便索引但理解不易
自定義索引 – 特徵名稱 – 屬性 – 便於理解

二、對dataframe進行行列資料篩選

import pandas as pd,numpy as np
from pandas import DataFrame
df = DataFrame(np.arange(20).reshape((4,5)),column = list('abcde'))

這裡寫圖片描述

1.df[]&df. 選取列資料

df.a
df[[‘a’,’b’]]

2.df.loc[[index],[colunm]] 通過標籤選擇資料

不對行進行篩選時,[index]處填 : (不能為空),即df.loc[:,’a’]表示選取a列全部資料。
df.loc[0,’a’]
df.loc[0:1,[‘a’,’b’]]
df.loc[[0,2],[‘a’,’c’]]

這裡寫圖片描述

3.df.iloc[[index],[colunm]] 通過位置選擇資料

不對行進行篩選時,同df.loc[],即[index]處不能為空。
df.iloc[0,0]
df.iloc[0:1,1:3]
df.iloc[[0,2],[1,3]]

這裡寫圖片描述

4.df.ix[[index],[column]] 通過標籤or位置選擇資料

df.ix[]混合了標籤和位置選擇。需要注意的是,[index]和[column]的框內需要指定同一類的選擇。
df.ix[[0:1],[‘a’,3]]報錯