1. 程式人生 > >《Python資料分析常用手冊》一、NumPy和Pandas篇

《Python資料分析常用手冊》一、NumPy和Pandas篇

      ‘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中唯一值的陣列