取dataframe的部分資料,或者修改部分資料是非常非常常見的操作,但是實際應用中,到底使用ix方法,還是iloc方法,還是loc方法,還需要討論。請看下面的實驗:
import pandas as pd
data = [['自有房',40,50000],
['無自有房',22,13000],
['自有房',30,30000]]
data = pd.dataframe
(data,index=['lc','cc','lbb'],columns=['house','age','income'])
df = data.ix[0,1]
df = data.iloc[0,1]
df = data.loc['lc','age']
# df = data.loc[0,'age'] #報錯
# df = data.iloc[0,'age'] #報錯
df = data.ix[0,'age']
df = data.ix[data['age']>=30]
df = data.ix[data['age']>=30,0]
# df = data.iloc[data['age']>=30,0] #報錯
# df = data.iloc[data['age']>=30] #報錯
df = data.loc[data['age']>=30]
df = data.loc[data['age']>=30,'age']
df = data[data['age']>=30]
# df = data[data['age']>=30,'age'] #報錯
df = data[data['age']>=30]['age']
print(df)
data.ix[0,1] = data.ix[0,1]+5
data.iloc[0,1] = data.iloc[0,1]+5
data.loc['lc','age'] = data.loc['lc','age']+5
data.ix[0,'age'] = data.ix[0,1]+5
# data.iloc[0,'age'] = data.iloc[0,1]+5 #報錯
data.loc[0,'age'] = data.loc['lc','age']+5 #會新增一行索引為0的行,且age為lc行age+5,但另外兩列為空值
print(data)
通過實驗結果其實就可以看出來了,結論如下:
1、ix可以接受位置索引和name索引,且行和列不必都是位置或name,但是pycharm有提示過我ix方法要被拋棄了,最好不用;
2、loc是基於name索引的,如果你行或列其中乙個用了位置索引,它會報index錯誤的,但是如果你是賦值給它,它會預設新增一行一列的;
3、iloc是基於位置索引的,如果你行或列其中乙個用了name索引,也是會報index錯誤的,而且賦值也不行;
4、這三種方法都可以新增條件進行過濾。
綜上所述,三種方法的功能都是取數,且都具有過濾功能,只是ix可以接受位置和name兩種形式的索引,loc只接受name形式,而iloc只接受位置索引。
pandas找出某值的所有行 Pandas基礎1
1.series 1.1 pandas系列可以使用以下建構函式建立 資料幀 dataframe 是二維資料結構,即資料以行和列的 方式排列。功能 潛在的列是不同的型別 大小可變 標記軸 行和列 可以對行和列執行算術運算 pandas中的dataframe可以使用以下建構函式建立 pandas.dat...
pandas 排序 Pandas 資料排序
python 的 pandas 庫中有一類對資料排序的方法,主要分為對引數列排序,對數值排序,及二者混合三種。一.引數列排序 首先我們生成乙個亂序數列 unsorted df 隨後我們可通過 df.sort index 函式對資料集進行排序操作 如不做規定,返回行引數正序排序 新增引數 ascend...
pandas列相加 Pandas 基礎
git 上pandas學習教程,共有十章 4個板塊 pandas基礎 四類操作 四類資料 例子。原文內容系統的講解了pandas庫的使用方法,編排邏輯易懂,覆蓋面廣且含有相應練習,之前已經學習過pandas,但是感覺應用時有些費力,計畫重新按照學習教程再梳理一遍,爭取10天完成學習,enjoy ti...