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進行電影數據分析及可視化