用Python做數(shù)據(jù)分析光是掌握numpy和matplotlib可不夠,,Pandas是必須要掌握的一個重點,numpy雖然能夠幫我們處理處理數(shù)值型數(shù)據(jù),,但是這還不夠,,很多時候,我們的數(shù)據(jù)除了數(shù)值之外,,還有字符串,,還有時間序列等。 今天來分享一些Pandas必會的用法,,讓你的數(shù)據(jù)分析水平更上一層樓,。 一、Pandas兩大數(shù)據(jù)結(jié)構(gòu)的創(chuàng)建序號 | 方法 | 說明 |
---|
1 | pd.Series(對象,index=[ ]) | 創(chuàng)建Series,。對象可以是列表\ndarray,、字典以及DataFrame中的某一行或某一列 | 2 | pd.DataFrame(data,columns = [ ],index = [ ]) | 創(chuàng)建DataFrame。columns和index為指定的列,、行索引,,并按照順序排列 |
舉例:用pandas創(chuàng)建數(shù)據(jù)表: df = pd.DataFrame({'id':[1001,1002,1003,1004,1005,1006], 'date':pd.date_range('20130102', periods=6), 'city':['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '], 'age':[23,44,54,32,34,32], 'category':['100-A','100-B','110-A','110-C','210-A','130-F'], 'price':[1200,np.nan,2133,5433,np.nan,4432]}, columns =['id','date','city','category','age','price'])
二、DataFrame常見方法序號 | 方法 | 說明 |
---|
1 | df.head() | 查詢數(shù)據(jù)的前五行 | 2 | df.tail() | 查詢數(shù)據(jù)的末尾5行 | 3 | pandas.qcut() | 基于秩或基于樣本分位數(shù)將變量離散化為等大小桶 | 4 | pandas.cut() | 基于分位數(shù)的離散化函數(shù) | 5 | pandas.date_range() | 返回一個時間索引 | 6 | df.apply() | 沿相應(yīng)軸應(yīng)用函數(shù) | 7 | Series.value_counts() | 返回不同數(shù)據(jù)的計數(shù)值 | 8 | df.reset_index() | 重新設(shè)置index,,參數(shù)drop = True時會丟棄原來的索引,,設(shè)置新的從0開始的索引,常與groupby()一起用 |
舉例:重新索引 df_inner.reset_index()
三,、數(shù)據(jù)索引序號 | 方法 | 說明 |
---|
1 | .values | 將DataFrame轉(zhuǎn)換為ndarray二維數(shù)組 | 2 | .append(idx) | 連接另一個Index對象,,產(chǎn)生新的Index對象 | 3 | .insert(loc,e) | 在loc位置增加一個元素 | 4 | .delete(loc) | 刪除loc位置處的元素 | 5 | .union(idx) | 計算并集 | 6 | .intersection(idx) | 計算交集 | 7 | .diff(idx) | 計算差集,產(chǎn)生新的Index對象 | 8 | .reindex(index, columns ,fill_value, method, limit, copy ) | 改變,、重排Series和DataFrame索引,會創(chuàng)建一個新對象,,如果某個索引值當(dāng)前不存在,,就引入缺失值。 | 9 | .drop() | 刪除Series和DataFrame指定行或列索引,。 | 10 | .loc[行標(biāo)簽,,列標(biāo)簽] | 通過標(biāo)簽查詢指定的數(shù)據(jù),第一個值為行標(biāo)簽,,第二值為列標(biāo)簽,。 | 11 | df.iloc[行位置,列位置] | 通過默認(rèn)生成的數(shù)字索引查詢指定的數(shù)據(jù),。 |
舉例:按索引提取單行的數(shù)值 df_inner.loc[3]
四,、DataFrame選取和重新組合數(shù)據(jù)的方法序號 | 方法 | 說明 |
---|
1 | df[val] | 從DataFrame選取單列或一組列;在特殊情況下比較便利:布爾型數(shù)組(過濾行)、切片(行切片),、或布爾型DataFrame(根據(jù)條件設(shè)置值) | 2 | df.loc[val] | 通過標(biāo)簽,,選取DataFrame的單個行或一組行 | 3 | df.loc[:,val] | 通過標(biāo)簽,選取單列或列子集 | 4 | df.1oc[val1,val2] | 通過標(biāo)簽,,同時選取行和列 | 5 | df.iloc[where] | 通過整數(shù)位置,,從DataFrame選取單個行或行子集 | 6 | df.iloc[where_i,where_j] | 通過整數(shù)位置,同時選取行和列 | 7 | df.at[1abel_i,1abel_j] | 通過行和列標(biāo)簽,,選取單一的標(biāo)量 | 8 | df.iat[i,j] | 通過行和列的位置(整數(shù)),,選取單一的標(biāo)量 | 9 | reindex | 通過標(biāo)簽選取行或列 | 10 | get_value | 通過行和列標(biāo)簽選取單一值 | 11 | set_value | 通過行和列標(biāo)簽選取單一值 |
舉例:使用iloc按位置區(qū)域提取數(shù)據(jù) df_inner.iloc[:3,:2] #冒號前后的數(shù)字不再是索引的標(biāo)簽名稱,而是數(shù)據(jù)所在的位置,,從0開始,,前三行,前兩列,。
五,、排序序號 | 函數(shù) | 說明 |
---|
1 | .sort_index(axis=0, ascending=True) | 根據(jù)指定軸索引的值進行排序 | 2 | Series.sort_values(axis=0, ascending=True) | 只能根據(jù)0軸的值排序。 | 3 | DataFrame.sort_values(by, axis=0, ascending=True) | 參數(shù)by為axis軸上的某個索引或索引列表,。 |
舉例:按照索引列排序 df_inner.sort_index()
六,、相關(guān)分析和統(tǒng)計分析序號 | 方法 | 說明 |
---|
1 | .idxmin() | 計算數(shù)據(jù)最小值所在位置的索引(自定義索引) | 2 | .idxmax() | 計算數(shù)據(jù)最大值所在位置的索引(自定義索引) | 3 | .argmin() | 計算數(shù)據(jù)最小值所在位置的索引位置(自動索引) | 4 | .argmax() | 計算數(shù)據(jù)最大值所在位置的索引位置(自動索引) | 5 | .describe() | 針對各列的多個統(tǒng)計匯總,用統(tǒng)計學(xué)指標(biāo)快速描述數(shù)據(jù)的概要 | 6 | .sum() | 計算各列數(shù)據(jù)的和 | 7 | .count() | 非NaN值的數(shù)量 | 8 | .mean( ) | 計算數(shù)據(jù)的算術(shù)平均值 | 9 | .median() | 計算算術(shù)中位數(shù) | 10 | .var() | 計算數(shù)據(jù)的方差 | 11 | .std() | 計算數(shù)據(jù)的標(biāo)準(zhǔn)差 | 12 | .corr() | 計算相關(guān)系數(shù)矩陣 | 13 | .cov() | 計算協(xié)方差矩陣 | 14 | .corrwith() | 利用DataFrame的corrwith方法,,可以計算其列或行跟另一個Series或DataFrame之間的相關(guān)系數(shù),。 | 15 | .min() | 計算數(shù)據(jù)的最小值 | 16 | .max() | 計算數(shù)據(jù)的最大值 | 17 | .diff() | 計算一階差分,對時間序列很有效 | 18 | .mode() | 計算眾數(shù),,返回頻數(shù)最高的那(幾)個 | 19 | .mean() | 計算均值 | 20 | .quantile() | 計算分位數(shù)(0到1) | 21 | .isin() | 用于判斷矢量化集合的成員資格,,可用于過濾Series中或DataFrame列中數(shù)據(jù)的子集 | 22 | .unique() | 返回一個Series中的唯一值組成的數(shù)組。 | 23 | .value_counts() | 計算一個Series中各值出現(xiàn)的頻率,。 |
舉例:判斷city列的值是否為北京 df_inner['city'].isin(['beijing'])
七,、分組的方法序號 | 方法 | 說明 |
---|
1 | DataFrame.groupby() | 分組函數(shù) | 2 | pandas.cut() | 根據(jù)數(shù)據(jù)分析對象的特征,按照一定的數(shù)值指標(biāo),,把數(shù)據(jù)分析對象劃分為不同的區(qū)間部分來進行研究,,以揭示其內(nèi)在的聯(lián)系和規(guī)律性。 |
舉例:.groupby用法 group_by_name=salaries.groupby('name') print(type(group_by_name))
輸出結(jié)果為: <class 'pandas.core.groupby.DataFrameGroupBy'>
八,、讀寫文本格式數(shù)據(jù)的方法序號 | 方法 | 說明 |
---|
1 | read_csv | 從文件,、URL、文件型對象中加載帶分隔符的數(shù)據(jù),。默認(rèn)分隔符為逗號 | 2 | read_table | 從文件,、URL、文件型對象中加載帶分隔符的數(shù)據(jù),。默認(rèn)分隔符為制表符(t) | 3 | read_ fwf | 讀取定寬列格式數(shù)據(jù)(也就是說,,沒有分隔符) | 4 | read_clipboard | 讀取剪貼板中的數(shù)據(jù),,可以看做read_table的剪貼板版。再將網(wǎng)頁轉(zhuǎn)換為表格時很有用 | 5 | read_excel | 從ExcelXLS或XLSXfile 讀取表格數(shù)據(jù) | 6 | read_hdf | 讀取pandas寫的HDF5文件 | 7 | read_html | 讀取HTML文檔中的所有表格 | 8 | read_json | 讀取JSON字符串中的數(shù)據(jù) | 9 | read_msgpack | 二進制格式編碼的pandas數(shù)據(jù) | 10 | read_pickle | 讀取Python pickle格式中存儲的任意對象 | 11 | read_sas | 讀取存儲于SAS系統(tǒng)自定義存儲格式的SAS數(shù)據(jù)集 | 12 | read_sql | 讀取SQL 查詢結(jié)果為pandas的DataFrame | 13 | read_stata | 讀取Stata文件格式的數(shù)據(jù)集 | 14 | read_feather | 讀取 Feather二進制文件格式 |
舉例:導(dǎo)入CSV或者xlsx文件 df = pd.DataFrame(pd.read_csv('name.csv',header=1)) df = pd.DataFrame(pd.read_excel('name.xlsx'))
九,、處理缺失數(shù)據(jù)序號 | 方法 | 說明 |
---|
1 | .fillna(value,method,limit,inplace) | 填充缺失值 | 2 | .dropna() | 刪除缺失數(shù)據(jù) | 3 | .info() | 查看數(shù)據(jù)的信息,,包括每個字段的名稱、非空數(shù)量,、字段的數(shù)據(jù)類型 | 4 | .isnull() | 返回一個同樣長度的值為布爾型的對象(Series或DataFrame),,表示哪些值是缺失的 |
舉例:查看數(shù)據(jù)表基本信息(維度、列名稱,、數(shù)據(jù)格式等等) df.info()
十,、數(shù)據(jù)轉(zhuǎn)換序號 | 方法 | 說明 |
---|
1 | .replace(old, new) | 用新的數(shù)據(jù)替換老的數(shù)據(jù),如果希望一次性替換多個值,,old和new可以是列表,。默認(rèn)會返回一個新的對象,傳入inplace=True可以對現(xiàn)有對象進行就地修改,。 | 2 | .duplicated() | 判斷各行是否是重復(fù)行,,返回一個布爾型Series。 | 3 | .drop_duplicates() | 刪除重復(fù)行,,返回刪除后的DataFrame對象,。 |
舉例:刪除后出現(xiàn)的重復(fù)值: df['city'].drop_duplicates()
結(jié)語文章中總結(jié)的是都是一些Pandas常用的方法,至于一些基礎(chǔ)的概念還需要你學(xué)到Pandas的時候去理解,,例如Series是什么,?DataFrame是什么?如果你已經(jīng)清楚了Pandas的這些基礎(chǔ)東西之后,,搭配上文章中的這些方法,,那你用Pandas去做數(shù)據(jù)處理和分析必然會游刃有余。
|