1. 程式人生 > >資料規整化:清理、轉換、合併、重塑

資料規整化:清理、轉換、合併、重塑

1. 合併資料集

pandas.merge可根據一個或者多個不同DataFrame中的行連線起來。
pandas.concat可以沿著一條軸將多個物件堆疊到一起。
認情況下  concat 是在axis=0上工作的,最終產生一個新的Series  axis=1是列 
例項方法combine_first可以將重複資料編接在一起,用一個物件中的值填充另一個物件中的缺失值。

2. 資料風格的DataFrame合併操作

2.1 資料集的合併(merge)或連線(jion)運算時通過一個或多個鍵將行連結起來的。如果沒有指定,merge就會將重疊列的列名當做鍵,最好顯示指定一下。
pd.merge(df1,df2,on='key')
2.2 預設情況下,merge做的是"inner"連線,結果中的鍵是交集。其他方式有“left”、“right”、“outer”。外連線求取的是鍵的並集,組合了左連線和右連線。
2.3 都對的的連線是行的笛卡爾積。
2.4 merge的suffixes選項,用於指定附加到左右兩個DataFrame物件的重疊列名上的字串。

3. 索引上的合併

DataFrame有merge和join索引合併。可以傳入left_index=True或right_index=True)以說明索引應該被用作連線建;由於預設的merge方法是求連線鍵的交集,因此你可以通過外連線的方式得到他們的並集。

4. 重塑和軸向旋轉

有許多用於重新排列表格型資料的基礎運算。這些函式也稱作重塑(reshape)或軸向旋轉(pivot)運算。
4.1 重塑層次化索引   
層次化索引為DataFrame資料的重排任務提供了良好的一致性方式。主要兩種功能:
    stack:將資料的列“旋轉”為行。
    unstack:將資料的行“旋轉”為列。

5. 資料轉換

   5.0移動重複資料  DateFrame的duplicated方法返回一個布林型Series,表示各行是否有重複行,還有一個與此相關的drop_duplicates,它用於返回一個移除了重複行的      DateFrame
5.1 利用函式或對映進行資料轉換
Series的map方法可以接受一個函式或含有對映關係的字典型物件。
5.2 替換值
replace可以由一個帶替換值組成的列表以及一個替換值
data.replace([-999,-1000],np.nan)
5.3 重新命名軸索引
軸標籤也可通函式或對映進行轉換,從而得到一個新物件軸還可以被就地修改,而無需新建一個數據結構。
5.4 離散化和麵元劃分
為了便於分析,連續資料常常被分散化或拆分成“面元”(bin)。ages=[20,22,25,71,25,22,23,31,61,45,41,32] bins=[18,25,35,60,100] 
pd.cut(ages,bins) 
 pandas的cut函式
5.5 檢測和過濾異常值
異常值的過濾或變換運算很大程度上其實就是陣列的運算。np.pandom.seed(123456)    data[(np.ads(data)>0).any(1)]

6. 字串操作

6.1 字串物件方法
split以逗號分割的字串可以拆分成數段。
字串“::”的jion方法以冒號分隔符的形式連線起來。
6.2 正則表示式
描述一個或多個空白符的regex是\s+
建立可重用的regex物件:
regex = re.complie('\s+')
regex.split(text)
6.3 pandas中向量化的字串函式
實現向量化的元素獲取操作:要麼使用str.get,要麼使用str屬性上使用索引。