在日常工作中,數據處理類的任務主要包括以下幾類:
與外界進行交互:讀寫各種數據文件及數據庫。
準備工作:對數據進行清理、修整、整合、規範化、重塑、切片切塊、變形等處理以便於進行分析。
轉換:對數據集進行數學統計運算產生新的數據集。(比如根據分組變量對一個大表進行聚合)
建模和計算:將數據與統計模型、機器學習算法或其他計算工具聯繫起來。
展示:創建交互式或靜態的圖片或文字摘要。
利用pandas對http://1.usa.gov數據時區進行計數:
DataFrame是pandas中最重要的數據結構,用於將數據表示為一個表格:
frame['tz']返回的Series對象有一個value_counts()方法,該方法統計Series中詞條出現的頻率,並按頻率降序排列:
記錄中缺失值可以用fillna函數替換,未知值可以用布爾型數組索引替換:
然後可以利用繪圖庫(matplotlib)的plot方法為這十條數據生成一張水平條形圖。(注意ipython一定要以pylab模式打開,否則以下代碼無效)
條形圖如下,統計.http://usa.gov數據中最常出現的時區:
還可以對這種類型的數據進行許多處理,以a字段為例,我們可以將a字段的第一節分離出來,得到一份用戶行為摘要:
現在可以按照Windows和非Windows用戶對時區統計信息進行分解:
接下來就可以按照時區和操作系統對數據進行分組,計數,重塑:
下面選取最常出現的時區:
然後我們使用stacked=True生成一張堆積條形圖:
為了看清較小分組中Windows用戶的比例,可以將各行規範化為“總計為1”,重新繪圖:
MovieLens 1M數據集
該數據集是一組電影評分數據,分為三個表:評分、用戶信息和電影信息,可以通過pandas.read_table將每個表讀到一個DataFrame對象中:
利用merge函數將所有數據合併到一個表中,並根據性別計算電影的平均得分:
過濾掉評分數據不足250條的電影,並瞭解女性觀眾最喜歡的電影(對F列降序):
找出男性和女性觀眾分歧最大的電影:
找出分歧最大的電影(不考慮性別),可以計算得分的方差或標準差:
1880-2010全美嬰兒姓名
該數據集按年度分割成了多個文件,利用pandas.concat將所有數據組裝到一個DataFrame裡,並加上一個year字段:
將names數據在sex和year級別上進行聚合:
插入一個prop列,用於存放指定名字的嬰兒數相對於總出生數的比例:
驗證所有分組的prop總和是否為1:
為了便於進一步分析,取出該數據的一個子集:每對sex/year組合的前1000個名字:
接下來的數據分析工作就針對這個top1000數據集了。
幾個男孩和女孩名字隨時間變化的使用數量:
接下來還可以分析命名趨勢,命名多樣性的變化等,這裡由於對pandas方法還不是很熟悉,就不一一試驗了。
大多是《利用python進行數據分析》的筆記