Python 數據分析(五):數據的處理

上一節我們講了數據的重複值、缺失值和空格值的處理,以及欄位抽取、欄位拆分和記錄抽取,Python 數據分析(四):數據的處理,今天我們繼續講隨機抽樣、記錄合併、欄位合併、欄位匹配、簡單計算等內容。

一、隨機抽樣

隨機抽樣就是指隨機從數據中抽取一定的行數或比例的的數據,使用 DataFrame.sample(n, frac, replace=False),其中 n 是指按個數抽樣,frac是按百分比,replac 是指是否可放回抽樣,默認是 False。需要注意的是 n 和 frac 不能一起設置。返回值是一個 DataFrame。

準備好數據後,設置隨機種子:

按照個數抽樣:

按照百分比抽樣:

是否可放回抽樣,當 replace 設置為 True 時為有放回的抽樣:

二、記錄合併

記錄合併是指將兩個結構相同的 DataFrame 合併成一個 DataFrame 。使用 concat([dataFrame1, dataFrame2,...]),結果返回的也是 DataFrame。

準備三份 csv 數據,數據以 「|」分割:

然後合併數據:

三、欄位合併

欄位合併是指將同一個 DataFrame 中的不同列,進行合併,形成新的列。它其實是欄位拆分的逆操作。

準備了如下數據,:

把數據進行這樣的拆分:

因為讀取的時候 Python 默認按照數值型讀取了數據,所以需要進行一下轉換:

把三列合併成一列:

四、欄位匹配

欄位匹配,就是根據各表共有的欄位,把各個表所需的記錄一一對應起來。

使用函數 merge(x, y, left_on, right_on), 其中 x 和 y 分別表示第一個和第二個DataFrame,lefton 表示第一個DataFrame 用於匹配的列,right_on 表示第二個,也就是共有的關鍵欄位,共有欄位類型必須相同。

先準備如下數據:

合併操作(left 類似於 SQL 中的左連接,即使左邊的在右邊找不到匹配的列,也會顯示出來,同理 ,right 為右鏈接,outer為外鏈接,會把左右兩邊匹配不上的都顯示出來):

五、簡單計算

簡單計算就是對已有的欄位進行加減乘除得出新的欄位,比如計算計算總價:

注意如果直接這樣寫會發現計算的總價並沒有併入 DataFrame 中:

需要這樣使用:

六、數據標準化

數據標準化是指將數據按比例縮放,使之落入到待定區間,0-1 標準化計算公式為:

準備如下數據:

然後進行0-1標準化,注意 round 函數可以讓你指定保留幾位有效小數:

七、數據分組

數據分組是根據數據分析對象的特徵,按照一定的數值指標,把數據分析對象劃分為不同的區間進行研究,以揭示其內在的聯繫和規律性。

我們使用 cut 函數:cut(series, bins, right=True, lables=NULL),其中:

series 表示需要分組的數據

bins 表示分組的劃分數組

right 表示分組的時候,右邊是否閉環,默認是 True

labels 表示分組的自定義標籤,可以不自定義

準備如下數據,cost 表示消費金額:

定義要劃分的數組,注意最小值和最大值需要往外再擴一點點,以防止最大值和最小值不能包含進來的情況:

進行 cut:

注意下面的區間跟上面的區別(左開又閉):

最後看下自定義標籤:

八、時間轉換

時間轉換是將字元型的時間格式數據轉換成時間型數據的過程,使用函數

datatime = pandas.to_datatime(dataString, format); format 表示時間格式,常見的時間格式有 %Y, %m, %d, %H, %M, %S ,分別代表年份、月份、日期、小時、分鐘和秒。

另外我們一般還需要用到日期抽取,日期抽取是指從日期格式裡面,抽取出需要的部分屬性,使用函數 datetime.dt.property, 常見的 property 有這麼幾個:

準備如下數據(註冊時間從 2011/1/1 到2011/9 都有,這裡只截取了部分):

格式化時間,將字元型時間格式轉換成時間型格式:

按照指定時間進行格式化:

我們還可以按時間年來抽取數據:

九、時間抽取

時間抽取就是根據一定條件對時間數據進行抽取,我們可以根據索引抽取(DataFrame.ix[start:end], DataFrame.ix(dates)),根據時間列抽取(DataFrame[condition])。

準備如下類似的數據:

定義一個 函數,用來把字元串轉換成時間格式:

將時間列變成索引:

根據索引抽取數據:

根據時間列進行抽取:

十、虛擬變數

虛擬變數,也叫啞變數和離散特徵編碼,可用來表示分類變數、非數量因素可能產生的影響。

虛擬變數的取值有兩種:

1,離散特徵的取值之間有大小的意義,例如尺寸(L、XL、XXL)

2,離散特徵的取值之間沒有大小意義,例如顏色(Red、Blue、Green)


推薦閱讀:

「有層次、可發展」的門店數字化管理,是通往新零售的必經之路
2017年3D列印行業大數據報告,3D列印品牌數據分析
Titanic 數據分析
2018年一定要收藏的20款免費預測分析軟體!
Python進行電影數據分析及可視化

TAG:Python | 數據分析 | 數據挖掘 |