1. 程式人生 > >進階第十六課 Python模塊之Pandas

進階第十六課 Python模塊之Pandas

des unique port date 創建索引 uniq 默認 使用 模塊

同十五課,都是從大神那裏轉載的。今後會逐步增加示例代碼。

Pandas

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

  >>> from pandas import Series, DataFrame

  >>> import pandas as pd

  A.pandas

函數 說明

pd.isnull(series)

pd.notnull(series)

判斷是否為空(NaN)

判斷是否不為空(not NaN)

2.2.A.1 pandas常用函數

  B.Series

    Series可以運用ndarray或字典的幾乎所有索引操作和函數,融合了字典和ndarray的優點。
屬性 說明
values 獲取數組
index 獲取索引
name values的name
index.name 索引的name

2.2.B.1 Series常用屬性

函數 說明
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) 應用元素級函數
排序函數 說明
Series.sort_index(ascending=True) 根據索引返回已排序的新對象
Series.order(ascending=True) 根據值返回已排序的對象,NaN值在末尾
Series.rank(method=‘average‘, ascending=True, axis=0) 為各組分配一個平均排名

df.argmax()

df.argmin()

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

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

2.2.B.2 Series常用函數

    reindex的method選項:

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

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

    rank的method選項

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

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

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

  C.DataFrame

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

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

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

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

屬性 說明
values DataFrame的值
index 行索引
index.name 行索引的名字
columns 列索引
columns.name 列索引的名字
ix 返回行的DataFrame
ix[[x,y,...], [x,y,...]] 對行重新索引,然後對列重新索引
T frame行列轉置

2.2.C.1 DataFrame常用屬性

函數 說明

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) 丟棄指定軸上的指定項。
排序函數 說明

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

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

根據索引排序
匯總統計函數 說明
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

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

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

返回樣本的累計和

返回樣本的累計最大值

返回樣本的累計最小值

返回樣本的累計積

返回樣本的一階差分

返回樣本的百分比數變化

計算函數 說明

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

2.2.C.2 Dataframe常用函數

索引方式 說明
df[val] 選取DataFrame的單個列或一組列
df.ix[val] 選取Dataframe的單個行或一組行
df.ix[:,val] 選取單個列或列子集
df.ix[val1,val2] 將一個或多個軸匹配到新索引
reindex方法 將一個或多個軸匹配到新索引
xs方法 根據標簽選取單行或者單列,返回一個Series
icol、irow方法 根據整數位置選取單列或單行,並返回一個Series
get_value、set_value 根據行標簽和列標簽選取單個值

2.2.C.3 Dataframe常用索引方式

    運算:

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

  D.Index

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


主要的Index對象 說明
Index 最廣泛的Index對象,將軸標簽表示為一個由Python對象組成的NumPy數組
Int64Index 針對整數的特殊Index
MultiIndex “層次化”索引對象,表示單個軸上的多層索引。可以看做由元組組成的數組
DatetimeIndex 存儲納秒級時間戳(用NumPy的Datetime64類型表示)
PeriodIndex 針對Period數據(時間間隔)的特殊Index

2.2.D.1 主要的Index屬性

函數 說明
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中唯一值的數組

2.2.D.2 常用Index函數

進階第十六課 Python模塊之Pandas