1. 程式人生 > >《利用Python進行資料分析》筆記二

《利用Python進行資料分析》筆記二

第七章----->最後資料的準備:載入、清理、轉換、重塑合併資料集pandas物件中的資料可以通過內建的方式進行合併資料庫風格的dataframe合併合併(merge)或連線(join)索引上的合併可以傳入left_index=Trueright_index=True來說明索引應該被用作連線鍵DataFrame還有一個join(預設是左連線,但是可以指定連線的方式)例項方法,它可以更為方便的實現按索引合併,還可以用於合併帶有相同或相似索引的DataFrame物件,不管他們之間有沒有重疊的列,軸向連線合併重疊資料 使用Series的combine_first方法,DataFrame又有這個方法重塑和軸向旋轉使用stack()方法和unstack()方法進行資料的重塑,使用DataFrame的pivot方法可以實現長格式到寬格式的轉化。
資料轉換重複資料的移除,通過DataFrame的duplicated方法判斷,通過drop_duplicates()方法移除,預設判斷全部列,保留第一個出現的值。利用函式或對映進行資料轉換,使用map()實現替換值用replace方法實現重新命名軸索引DataFrame的軸標籤也有map()方法,DataFrame還有一個使用的方法是rename()方法離散化和麵元劃分使用pandas的cut函式和qcut函式檢測和過濾異常值:使用條件判斷,和重新定義值得方法排列和隨機取樣:用numpy.random.permutation函式生成一個隨機序列,用take函式對陣列進行重新排列計算指標/啞變數通過pandas一個get_dummies函式實現,實用技巧
:結合get_dummies和諸如cut之類的離散化函式。字串操作字串物件方法對於字串方法index和find的區別:如果找不到字串,index將會引發一個異常,而不會返回一個-1正則表示式為匹配的分組加上一個名稱可以得到一個好用的帶有分組名稱的字典,將待分段的各個部分用圓括號包起來,可以得到一個元組列表第九章 資料聚合與分組運算使用groupby()方法可以實現分組,得到一個groupby物件,groupby預設是在axis=0(第一個軸)上進行分組,可以通過設定在其他任何軸上進行分組。可以對分組進行迭代,可以只選取其中一個或一組列可以通過字典或Series進行分組。如下圖通過函式分組也可以。可以根據索引級別進行分組,資料的聚合
如果要使用自己的聚合函式,只需要將其傳入aggregate或agg方法即可也可以給agg傳入一個由(name,function)元組組成的列表,則元組的第一個元素就會被用作DataFrame的列名(可以將這種二元元組列表看做一個有序對映)。要想對不同的列應用不同的函式,可以向agg傳入一個從列名對映到函式的字典。分組級運算和轉換transform將一個函式應用到各個分組,然後將結果放置到適合的位置上,pandas中的兩個重要函式的結合使用,groupby與apply的結合使用,分組加權平均數和相關係數分別用category函式和corrwith實現透視表和交叉表,pivote_table的預設聚合型別是計算分組平均數。如果傳入margins= True 將會新增分項小計。要使用其他聚合函式時,將其傳給aggfunc即可。交叉表:crosstab計算分組頻率的特殊透視表時間序列日期和時間資料型別及工具data : 儲存日曆日期time :儲存時間為:時,分,秒,毫秒datatime : 儲存日期和時間timedelta 表示兩個datetime值之間的差(日,秒,毫秒)字串和datetime的相互轉換可以第三方包dateutil中的parser.parser方法解析常見的日期格式dateutil可以解析幾乎所有人類能理解的日期格式。(不包括中文)時間序列基礎pandas最基本的時間序列型別是以時間戳為索引的Series。通過日期進行切片,可以用不存在於該時間序列中的時間戳對其進行切片,切片產生的是源時間的檢視。帶有重複索引的時間序列,可以通過groupby進行聚合,日期的範圍頻率和移動生成日期範圍pandas.data_range可以用於生成指定長度的DatetimeIndex頻率和日期偏移量WOM日期(week of month)是一個非常實用的頻率類。移動(超前或滯後)資料shift方法可用於執行單純的前移或後移操作,保證索引不變。也可以通過傳入freq引數來使索引變化,而資料不丟失。通過偏移量對日期進行位移可以通過錨點偏移量的rollforwardrollback方法,可顯示的將日期向前或向後“滾動”,可以巧妙的結合groupby使用。時區處理本地化和轉換Timestamp物件,不同時區之間的運算,最終結果就會是UTC,時期及其算數運算。如果兩個Period物件擁有相同的頻率,則他們的差就是他們之間的單位數量。時期的頻率轉換Period和PeriodIndex物件都可以通過其asfreq方法被轉換成別的頻率。按季度計算的時間頻率將Timestamp轉換為Period通過to_period方法,可以將時間戳索引的Series和DataFrame物件轉化為以日期索引。to_timestamp是相反的過程也可以通過陣列建立PeriodIndex重取樣和頻率轉換,pandas物件都有一個resample方法,他是各種頻率轉換工作的主力函式重取樣是通過傳入引數(例如closed、label,loffset等)可以獲取到目標序列,OHLC取樣金融領域一種無處不在的時間序列聚合方式(open 開盤,close 收盤)通過groupby進行重取樣,升取樣和插值通過時期進行取樣時間序列繪圖移動視窗函式**************指數加權函式**********二元移動視窗函式******************************頻率不同的時間序列運算時:Period索引的兩個不同的時間序列之間的運算必須進行顯示的轉換。時間和最當前資料選取Python的datetime.time物件索引即可抽選出時間點上的值。實際是用的例項方法at_time將Timestamp傳入asof方法,就能得到這些時間點處(或其之前最近)的有效值,拼接多個數據源是用pd.concat即可實現資料的拼接用一個時間序列對當前時間序列的缺失值“打補丁”:combine_first可以引入合併之前的資料,還有一個類似的方法時updata方法,如果想只填充空洞則必須傳入引數:overwrite=False通過機制直接設定列會簡單些。numpy的高階應用陣列的重塑可以用reshape實現將一個矩陣排列為一個新矩陣,用ravel(不會產生源資料的副本)和flatten(總是返回資料的副本)實現拆開或扁平化,C和Fortran順序c/行優先Fortran/列優先順序陣列的合併和拆分:numpy.concatenate可以按指定軸將一個有陣列組成的序列連線到一起。也可以通過方便的方法,vstack和hstack方法實現。split用於將一個數組沿指定的軸拆分為多個數組。堆疊輔助類:r_和c_重複元素操作:tile(像瓷磚一樣鋪開原資料)和repeat(將各個元素重複一定次數)花式索引的等價函式:take和put廣播沿其他軸向的廣播。通過廣播設定陣列的值。ufunc高階應用方法:reduce(x) 通過連續執行原始運算的方式對值進行聚合accumulate(x) 聚合值,保留所有區域性聚合結果reduceat(x,bins) “區域性簡約”(也就是groupby)。約簡資料的各個切片以產生聚合型陣列outer(x,y) 對x和y中的每對元素應用原始運算。結果陣列的形狀為x.shape + y.shape自定義ufunc有兩個工具可以將自定義函式像ufunc那樣使用,np.frompyfunc(add_elements,2,1) #引數分別是:一個函式和兩個分別表示輸入輸出引數數量的整數還有一個是numpy.vectorize。它的型別推斷能力要比frompyfunc智慧。結構化和記錄式陣列可以像C語言中的結構體一樣儲存不同型別的數和表格型的資料。巢狀dtype和多維欄位是一個很強大的功能。pandas並不支援這個功能,但是它的分層索引機制和這個差不多。關於排序的話題ndarray的sort例項方法也是就地排序,numpy.sort會為原陣列建立一個已排序的副本,但是排序都沒有提供設定降序的方法,但可以用有關列表的一個小技巧:values[::-1]可以返回一個反序的列表。對nadarray也是如此。間接排序用argsort方法和numpy.lexsort方法實現該功能。lexsort對鍵的應用順序是從最後一個傳入的算起的。其他排序演算法np的三種排序演算法中,mergesort(合併排序)是唯一的穩定排序,陣列排序演算法:‘quicksort’ 不穩定‘mergesort’ 穩定‘heapsort’ 不穩定numpy.searchsorted:在有序陣列中查詢元素

相關推薦

利用Python進行資料分析筆記-時間序列(轉換、索引、偏移)

時間序列指能在任何能在時間上觀測到的資料。很多時間序列是有固定頻率(fixed frequency)的,意思是資料點會遵照某種規律定期出現,比如每15秒,每5分鐘,或每個月。時間序列也可能是不規律的(irregular),沒有一個固定的時間規律。如何參照時間序列

重要的Python庫(利用Python進行資料分析筆記

NumPy(Numerical Python) 快速高效的多維陣列物件ndarray 用於對陣列執行元素級計算以及直接對陣列執行數學運算的函式 線性代數運算、傅立葉變換,以及隨機數生成 用於將C、C++,Fortran程式碼整合到Python的工具

利用Python進行資料分析——筆記2

用純Python程式碼對時區進行計數 (注:原來使用pylab輸入程式碼,不太方便,就換成了Pycharm編輯器) 假設我們想要知道該資料集中最常出現的是哪個時區(即tz欄位),得到答案的辦法有很多。 import json path ='G:/python/pydata-

利用Python進行資料分析筆記

第七章----->最後資料的準備:載入、清理、轉換、重塑合併資料集pandas物件中的資料可以通過內建的方式進行合併資料庫風格的dataframe合併合併(merge)或連線(join)索引上的合併可以傳入left_index=True或right_index=True

利用python進行資料分析》讀書筆記之案例:全美嬰兒姓名

這份資料包含了從1880到2010年間的嬰兒名字頻率資料,其資料形式是多個txt檔案,且用逗號分隔,可以用pandas.read_csv將其載入到DataFrame中,並且用pandas.concat將所有資料都組裝到一個DataFrame。  years=range

筆記1:利用python進行資料分析

#筆記1:利用python進行資料分析 numpy模組,各種函式等等 因為不想使用編碼軟體,所以直接文字編輯器,cmd執行結果; 提一個小技巧:cmd中複製資訊操作,右擊–》標記–》選擇需要複製的資訊(一般為白色背景)–》在複製區外右擊,之後在需要的地方-》ctrl+v 就可以了; 直

利用Python進行資料分析閱讀筆記(一)

資料規整化:清理,轉換,合併,重塑 轉置(transpose)     實現的幾種方式:  import numpy as np arr = np.arange(15).reshape((3,5)) print(arr) print(arr.T) pri

Python--學習筆記2 常用庫 <利用Python進行資料分析>

numpy   科學計算包:多維陣列物件;數學運算函式;隨機數;傅立葉變換   可以作為演算法之間傳遞資料的容器。 pandas   快速處理結構化資料和函式。   dataframe, 面向列的二維表結構,含有行標和列標。 matplotliba &nb

利用 Python 進行資料分析(十)pandas:資料合併

原文地址 pandas 提供了三種主要方法可以對資料進行合併: pandas.merge()方法:資料庫風格的合併;pandas.concat()方法:軸向連線,即沿著一條軸將多個物件堆疊到一起;例項方法combine_first()方法:合併重疊資料。 pandas

利用Python進行資料分析筆記及案例

《利用Python進行資料分析》 本書算是資料分析領域絕對經典的一本書了,動物書系列基本都是比較值得學習的範本。 針對科學計算領域的Python開源庫生態系統,在過去十幾年間得到了飛速發展,本書對剛剛接觸資料分析和統計應用的Python程式設計師,提供了集中

初入資料分析2(《利用Python進行資料分析·第2版》筆記

初入資料分析2 遍歷 seq=[(1,2,3),(4,5,6),(7,8,9)] for a,b,c in seq: print("a==",a,"b==",b,"c==",c) a== 1 b== 2 c== 3 a== 4 b== 5 c== 6 a==

Numpy基礎 --陣列和向量計算 利用Python進行資料分析讀書筆記

Numpy 陣列和向量計算 程式碼下載 import numpy as np #ndarray物件 陣列 NumPy陣列 建立ndarray data1=[6,7.5,8,0,1] arr1=np.array(data1) a

資料集合與分組運算 《利用python進行資料分析筆記,第9章

pandas的groupby功能,可以計算 分組統計和生成透視表,可對資料集進行靈活的切片、切塊、摘要等操作 GroupBy技術 “split-apply-comebine”(拆分-應用-合併) import numpy as np from pand

轉載]利用Python進行資料分析——繪圖和視覺化 xticks-學習筆記

matplotlib是一個用於創建出版質量圖表的桌面繪圖包(主要是2D方面)。該專案是由John Hunter於2002年啟動的,其目的是為Python構建一個MATLAB式的繪圖介面。如果結合使用一種GUI工具包(如IPython),matplotlib還具有諸如縮放和平移等互動功能。它不僅支援各種作業系

利用Python進行資料分析》第二版,第二章精選筆記

因為這本書是專注於Python資料處理的,對於一些Python的資料結構和庫的特性難免不足。因此,本章和第3章的內容只夠你能學習本書後面的內容。 在我來看,沒有必要為了資料分析而去精通Python。我鼓勵你使用IPython shell和Jupyter試驗示例

利用python進行資料分析學習筆記-Pandas篇

無論如何,堅持啊! pandas的資料結構 Series obj = Series([]) #產生一個Series obj = Series({})#可以通過引入一個dict來建立一個Series 包括values和index兩個屬性,而valu

利用Python進行資料分析》第一章讀書筆記

一、重要的Python庫 1. NumPy(Python科學計算的基礎包) 2. pandas(本書用得最多pandas物件是DataFrame) 3. matplotlib(繪製資料圖表得Python庫) 4. IPython(目的是提

利用Python進行資料分析》第三章筆記

第三章IPython 1.在IPython環境中輸入一個東西后按TAB鍵可顯示自動完成功能 2.IPython會自動隱藏以下劃線開頭的方法和屬性,若要輸出自己必須先輸入一個下劃線後按TAB即可 3.TAB鍵還可以查詢檔案:例如 D:/(按TAB鍵可顯示D盤檔案) 4.物件內

利用Python進行資料分析筆記---第2章--MovieLens 1M資料

寫在前面的話: 還有一定要說明的: 我使用的是Python2.7,書中的程式碼有一些有錯誤,我使用自己的2.7版本調通。 # coding: utf-8 import pandas a

利用Python進行資料分析筆記---第9章資料聚合與分組運算

寫在前面的話: 還有一定要說明的: 我使用的是Python2.7,書中的程式碼有一些有錯誤,我使用自己的2.7版本調通。 # coding: utf-8 from pandas import Series, DataFrame import p