pandas 常用方法

1.布爾篩選
data.loc[(data['a'] ==a1)&(data ['B'] ==b1),['A','B']]
2.data.apply ( func, axis=0) 
#axis=0 defines that function is to be applied on each column
3.#對於類別變量 填補缺失值
from scipy.stats import mode
mode(data['Gender'])
data['Gender'].fillna(mode(data['Gender']).mode[0], inplace=True)
4.#利用多元變量組合  對 其他變量分類 創建透視表
impute_grps = data.pivot_table(values=["LoanAmount"], index=["Gender","Married","Self_Employed"], aggfunc=np.mean)
5.利用上面的分類情況 填補缺失值
#iterate only through rows with missing LoanAmount
for i,row in data.loc[data['LoanAmount'].isnull(),:].iterrows():
  ind = tuple([row['Gender'],row['Married'],row['Self_Employed']])#得到缺失值所對應的三元組
  data.loc[i,'LoanAmount'] = impute_grps.loc[ind].values[0]#查詢 多維索引
6.#crosstab 用於可視化 一個取值做行標籤一個做列標籤 查看相關關係
pd.crosstab(data["Credit_History"],data["Loan_Status"],margins=True)
7.#merge合併
8.#排序
data_sorted = data.sort_values(['ApplicantIncome','CoapplicantIncome'], ascending=False)
9.#plotting(Boxlplot Histogram)   比較分佈 ApplicantIncome(通過 Loan_Status分類)查看不同取值對分佈有無影響
%matplotlib inline
data.boxplot(column="ApplicantIncome",by="Loan_Status")
data.hist(column="ApplicantIncome",by="Loan_Status",bins=30)
10 分組pd.cut() :傳入三個切分點四個標籤分爲四組 用於變量分組離散化
def binning(col, cut_points, labels=None):
  minval = col.min()
  maxval = col.max()
  break_points = [minval] + cut_points + [maxval]#連接列表 五個值
  if not labels:
    labels = range(len(cut_points)+1)
  colBin = pd.cut(col,bins=break_points,labels=labels,include_lowest=True)
  return colBin

#Binning age:
cut_points = [90,140,190]
labels = ["low","medium","high","very high"]
data["LoanAmount_Bin"] = binning(data["LoanAmount"], cut_points, labels)#創建新特徵
print pd.value_counts(data["LoanAmount_Bin"], sort=False)

11.編碼標稱數據  Low/low...對於輸入有誤意思一樣的數據統一標示,細粒度區分合並  或者是變成數值型便於模型利用
#Define a generic function using Pandas replace function
def coding(col, codeDict):
  colCoded = pd.Series(col, copy=True)
  for key, value in codeDict.items():
    colCoded.replace(key, value, inplace=True)
  return colCoded
 
#Coding LoanStatus as Y=1, N=0:
print 'Before Coding:'
print pd.value_counts(data["Loan_Status"])
data["Loan_Status_Coded"] = coding(data["Loan_Status"], {'N':0,'Y':1})
print '\nAfter Coding:'
print pd.value_counts(data["Loan_Status_Coded"])
12.#防止變量類型不正確引起的麻
  1. 具有數字類別的類別變量被視爲數字。
  2. 在其中一行中輸入的字符(由於數據錯誤)的數字變量被認爲是分類的
創建一個帶有列名和類型的csv文件,用通用函數來讀取文件並分配列數據類型
加載該文件後,我們可以遍歷每一行,並使用列“type”將數據類型分配給“feature”列中定義的變量名。
for i, row in colTypes.iterrows():  #i: dataframe index; row: each row in series format
    if row['type']=="categorical":
        data[row['feature']]=data[row['feature']].astype(np.object)
    elif row['type']=="continuous":
        data[row['feature']]=data[row['feature']].astype(np.float)
print data.dtypes
















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章