數據分析三大神器之二:Pandas

數據分析三大神器之二:Pandas

簡介:

pandas 是基於NumPy 的一種工具,該工具是爲了解決數據分析任務而創建的。Pandas 納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。

>>> from pandas import Series, DataFrame

>>> import pandas as pd

目錄

數據分析三大神器之二:Pandas

1、常用函數

2、Series

3、DataFrame

4、Index


1、常用函數

函數

說明

pd.isnull(series)

pd.notnull(series)

判斷是否爲空(NaN)

判斷是否不爲空(not NaN)

2、Series

Series可以運用ndarray或字典的幾乎所有索引操作和函數,融合了字典和ndarray的優點。

屬性

說明

values

獲取數組

index

獲取索引

name

values的name

index.name

索引的name

 

2.1Series常用函數

函數

說明

Series([x,y,...])Series({'a':x,'b':y,...}, index=param1)

生成一個Series

Series.copy()

複製一個Series 

Series.reindex([x,y,...], fill_value=NaN)

Series.reindex([x,y,...], method=NaN)

Series.reindex(columns=[x,y,...])

重返回一個適應新索引的新對象,將缺失值填充爲fill_value

返回適應新索引的新對象,填充方式爲method

對列進行重新索引

Series.drop(index)

丟棄指定項

Series.map(f)

應用元素級函數 

eindex的method選項:

ffill, bfill     向前填充/向後填充

pad, backfill   向前搬運,向後搬運

2.2排序函數

排序函數

說明

Series.sort_index(ascending=True)

根據索引返回已排序的新對象

Series.order(ascending=True)

根據值返回已排序的對象,NaN值在末尾

Series.rank(method='average', ascending=True, axis=0)

爲各組分配一個平均排名

df.argmax()

df.argmin()

返回含有最大值的索引位置

返回含有最小值的索引位置

rank的method選項

'average'    在相等分組中,爲各個值分配平均排名

'max','min'   使用整個分組中的最小排名

'first'      按值在原始數據中出現的順序排名

 

3、DataFrame

DataFrame是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共用同一個索引)。

DataFrame可以通過類似字典的方式或者.columnname的方式將列獲取爲一個Series。行也可以通過位置或名稱的方式進行獲取。

    爲不存在的列賦值會創建新列。

>>> del frame['xxx'] # 刪除列

3.1常用屬性

屬性

說明

values

DataFrame的值

index

行索引

index.name

行索引的名字

columns

列索引

columns.name

列索引的名字

ix

返回行的DataFrame

ix[[x,y,...], [x,y,...]]

對行重新索引,然後對列重新索引

T

frame行列轉置

3.2常用函數

函數

說明

DataFrame(dict, columns=dict.index, index=[dict.columnnum])

DataFrame(二維ndarray)

DataFrame(由數組、列表或元組組成的字典)

DataFrame(NumPy的結構化/記錄數組)

DataFrame(由Series組成的字典)

DataFrame(由字典組成的字典)

DataFrame(字典或Series的列表)

DataFrame(由列表或元組組成的列表)

DataFrame(DataFrame)

DataFrame(NumPy的MaskedArray)

構建DataFrame

數據矩陣,還可以傳入行標和列標

每個序列會變成DataFrame的一列。所有序列的長度必須相同

類似於“由數組組成的字典”

每個Series會成爲一列。如果沒有顯式制定索引,則各Series的索引會被合併成結果的行索引

各內層字典會成爲一列。鍵會被合併成結果的行索引。

各項將會成爲DataFrame的一行。索引的並集會成爲DataFrame的列標。

類似於二維ndarray

沿用DataFrame

類似於二維ndarray,但掩碼結果會變成NA/缺失值

df.reindex([x,y,...], fill_value=NaN, limit)

df.reindex([x,y,...], method=NaN)

df.reindex([x,y,...], columns=[x,y,...],copy=True)

返回一個適應新索引的新對象,將缺失值填充爲fill_value,最大填充量爲limit

返回適應新索引的新對象,填充方式爲method

同時對行和列進行重新索引,默認複製新對象。

df.drop(index, axis=0)

丟棄指定軸上的指定項。

3.3排序函數

排序函數

說明

df.sort_index(axis=0, ascending=True)

df.sort_index(by=[a,b,...])

根據索引排序

3.4彙總統計函數

彙總統計函數

說明

df.count()

非NaN的數量

df.describe()

一次性產生多個彙總統計

df.min()

df.min()

最小值

最大值

df.idxmax(axis=0, skipna=True)

df.idxmin(axis=0, skipna=True)

返回含有最大值的index的Series

返回含有最小值的index的Series

df.quantile(axis=0)

計算樣本的分位數

df.sum(axis=0, skipna=True, level=NaN)

df.mean(axis=0, skipna=True, level=NaN)

df.median(axis=0, skipna=True, level=NaN)

df.mad(axis=0, skipna=True, level=NaN)

df.var(axis=0, skipna=True, level=NaN)

df.std(axis=0, skipna=True, level=NaN)

df.skew(axis=0, skipna=True, level=NaN)

df.kurt(axis=0, skipna=True, level=NaN)

df.cumsum(axis=0, skipna=True, level=NaN)

df.cummin(axis=0, skipna=True, level=NaN)

df.cummax(axis=0, skipna=True, level=NaN)

df.cumprod(axis=0, skipna=True, level=NaN)

df.diff(axis=0)

df.pct_change(axis=0)

返回一個含有求和小計的Series

返回一個含有平均值的Series

返回一個含有算術中位數的Series

返回一個根據平均值計算平均絕對離差的Series

返回一個方差的Series

返回一個標準差的Series

返回樣本值的偏度(三階距)

返回樣本值的峯度(四階距)

返回樣本的累計和

返回樣本的累計最大值

返回樣本的累計最小值

返回樣本的累計積

返回樣本的一階差分

返回樣本的百分比數變化

3.5計算函數

計算函數

說明 

df.add(df2, fill_value=NaN, axist=1)

df.sub(df2, fill_value=NaN, axist=1)

df.div(df2, fill_value=NaN, axist=1)

df.mul(df2, fill_value=NaN, axist=1)

元素級相加,對齊時找不到元素默認用fill_value 

元素級相減,對齊時找不到元素默認用fill_value 

元素級相除,對齊時找不到元素默認用fill_value 

元素級相乘,對齊時找不到元素默認用fill_value 

df.apply(f, axis=0)

將f函數應用到由各行各列所形成的一維數組上

df.applymap(f)

將f函數應用到各個元素上

df.cumsum(axis=0, skipna=True)

累加,返回累加後的dataframe

3.6索引

索引方式

說明

df[val]

選取DataFrame的單個列或一組列

df.ix[val]

選取Dataframe的單個行或一組行

df.ix[:,val]

選取單個列或列子集

df.ix[val1,val2]

將一個或多個軸匹配到新索引

reindex方法

將一個或多個軸匹配到新索引

xs方法

根據標籤選取單行或者單列,返回一個Series

icol、irow方法

根據整數位置選取單列或單行,並返回一個Series

get_value、set_value

根據行標籤和列標籤選取單個值

運算:

默認情況下,Dataframe和Series之間的算術運算會將Series的索引匹配到的Dataframe的列,沿着列一直向下傳播。若索引找不到,則會重新索引產生並集。

 

4、Index

pandas的索引對象負責管理軸標籤和其他元數據(比如軸名稱等)。構建Series或DataFrame時,所用到的任何數組或其他序列的標籤都會被轉換成一個Index。Index對象不可修改,從而在多個數據結構之間安全共享。

4.1主要屬性

主要的Index對象

說明

Index

最廣泛的Index對象,將軸標籤表示爲一個由Python對象組成的NumPy數組

Int64Index

針對整數的特殊Index

MultiIndex

“層次化”索引對象,表示單個軸上的多層索引。可以看做由元組組成的數組

DatetimeIndex

存儲納秒級時間戳(用NumPy的Datetime64類型表示)

PeriodIndex

針對Period數據(時間間隔)的特殊Index

 

4.2常用函數

函數

說明

Index([x,y,...])

創建索引

append(Index)

連接另一個Index對象,產生一個新的Index

diff(Index)

計算差集,產生一個新的Index

intersection(Index)

計算交集

union(Index)

計算並集

isin(Index)

檢查是否存在與參數索引中,返回bool型數組

delete(i)

刪除索引i處元素,得到新的Index

drop(str)

刪除傳入的值,得到新Index

insert(i,str)

將元素插入到索引i處,得到新Index

is_monotonic()

當各元素大於前一個元素時,返回true

is_unique()

當Index沒有重複值時,返回true

unique()

計算Index中唯一值的數組

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章