《Python資料分析常用手冊》一、NumPy和Pandas篇
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中唯一值的陣列 |