python庫--pandas--DataFrame


轉換    索引,迭代    運算符    功能應用,分組及窗口    計算/描述統計

重新索引/選擇/標簽操作    缺失數據處理    形狀變換/排序/轉置

組合/加入/合並    時間序列相關    繪圖    序列化/IO/轉換    稀疏


 點擊打開API: 官方    中文

方法 返回值類型 參數 說明
DataFrame() df data=None 2D數據或字典
index=None 索引
columns=None 列標簽
dtype=None 數據類型
copy=False 是否復制數據
屬性及底層數據結構
.as_matrix() ndarray columns=None 返回指定列(默認全部)
.get_dtype_counts()     返回dtype的計數結果
.get_ftype_counts()     返回ftype的計數結果
.select_dtypes() df 選擇或排除指定數據類型的列
include=None 標量或list_like, 要選擇的列
exclude=None 標量或list_like, 要排除的列
.memory_usage()   Series df的內存使用情況
index=True 索引是否參與計算
deep=False 是否計算df引用的對象的內存使用情況
.index   行標簽
.columns   列標簽
.values ndarray df的值
.dtypes Series df每一列的數據類型
.ftypes Series 返回df每一列是稀疏還是稠密, 以及數據類型
.axes list 返回 [行標簽, 列標簽]
.ndim int 軸數
.size int df的元素數量
.shape tuple df的形狀
 轉換  (轉到首行)
.astype() df 轉換數據類型
dtype np.dtype 或 {列名: np.dtype}
copy=True 是否復制基層數據
errors='raise' 'raise': 轉換失敗則報錯
'ignore': 轉換失敗則保留原數據類型
**kwargs 更多關鍵字參數
.infer_objects() df 試圖推斷更好的dtypes
.copy() df 拷貝數據
deep=True False: 同賦值號, True: 拷貝數據, 但不會深層拷貝
.isnull() df 判斷對應位置元素是否是空值, 0.22版本新增.isna()
.notnull() df 判斷對應位置元素是否不是空值, 0.22版本新增.notna()
索引, 迭代  (轉到首行)
.head() df n=5 返回前n行
.at[i, c]   標量 基於標簽的訪問器
.iat[m, n]   標量 基於位置的訪問器
.loc[i, c]      [i, c] 基於單個標簽訪問
[[i1,i2], [c1,c2]] 基於多個標簽訪問
[i1:i2, c1:c2] 包括邊界
[bool_df] 僅保留True位置的值
.iloc[m, n]   參考.loc, 不過是基於位置的
.insert() df 新增列
loc 要插入的位置[0, len(columns)]
column 要設置的列標簽
value 要插入的值
allow_duplicates=F 列標簽是否允許重名
.__iter__() iter 返回一個列標簽迭代器
.iteritems() iter 返回列迭代器 (列名, Series)
.iterrows() iter 返回行迭代器 (索引, Series)
.itertuples() iter 返回行迭代器 Pandas(Index=i1, c1=v1, c2=v2, ...)
index=True 是否返回索引
name='Pandas'  
.lookup() ndarray 返回 [df.loc[i1,c1], df.loc[i2,c2], ...]
row_labels [i1, i2, ...]
col_labels [c1, c2, ...]
.pop() Series item 刪除並返回指定列
.tail() df n=5 返回后n行
.xs()   返回指定行或列
key 行標簽或列標簽, 可以是Multilndex (c_name or int)
axis=0
level=None 標量或list_like. 指定key是多級索引中的哪幾級
drop_level=True 是否刪除level指定的那幾級索引
.isin() df 判斷元素是否在values中
values list: 判斷所有元素是否在此列表中
dict: {c: []} 判斷對應列的值是否在字典對應列表中
df: 對應列名, 包含且index相同才返回True
.where() df 把df中不滿足條件的那些值替換為other
cond 跟df同形狀的bool元素組成的2D數據
oter=nan 標量或df. False對應的值替換為other
inplace=False 是否本地修改
axis=None df和other對齊的軸, 另外一個軸按順序對齊
level=None 如有需要, 對齊級別
errors='raise' 此參數目前無效
try_cast=False 嘗試將結果轉換為輸入類型
raise_on_error=N 0.21棄用
.mask() df 與where相反, 將滿足條件的替換為other
.query() df 返回滿足條件的行
expr 比如 'c1 > c2' 返回滿足c1>c2的那些行 (也可用@符號調用變量)
inplace=False 是否本地修改
**kwargs pandas.eval()
運算符  (轉到首行)
.add() df 加法運算, 類似df+other
other 常量, Series或df
axis='columns' {0, 1, 'index', 'columns'}, other為Series時生效
level=None int或name. 在一個級別上廣播
fill_value=None 用來填充缺失值的值, 若兩個df位置都丟失, 結果將會丟失
.sub; .mul; div; .truediv; .floordiv; .mod; .pow  -   *   /   /   //   %   **
.radd; .rsub; ... 右側運算, 即 other - df 等
.lt ; .gt ; .le ; .ge ; .ne ; .eq  <   >   <=   >=   !=   ==
.combine() df 使用自定義函數運算
other df
func 傳入兩個Series(兩個df的對應列), 返回一個Series
fill_value=None 標量
overwrite=True  
.combine_first() df other 按照索引求並集, 優先保留左側值
功能應用, 分組及窗口  (轉到首行)
.apply()
       
df
       
對df中的每一行(列)執行操作
func 傳入一個Series, 返回一個Series
axis=0 0或'index': 傳入的是列
1或'columns': 傳入的是行
broadcast=False 是否廣播, 對於聚合函數, 返回和傳播值相同大小的對象
raw=False True: 傳入函數的將是ndarray而不是Series(性能更好)
reduce=None True: 返回Series(若無法返回Series將返回df), False: 返回df
args=() 其它位置參數傳遞給func
**kwds 其它關鍵詞參數傳遞給func
.applymap() df 對每一個元素執行func
func 傳入一個值, 返回一個值
.agg[regate]()   df 對每一列(行)執行某一操作
func '內置函數名': 對每一列(行)執行此操作(如'sum')
function: 要對每一列(行)執行的操作
['內置函數名'] or [function] 對每一列(行)執行多個操作
dict: {name: function or functions} 對對應列(行)執行對應操作
axis=0 0: 對每一列執行操作, 1:對每一行執行操作
*args 傳遞給函數的位置參數
**kwargs 傳遞給函數的關鍵詞參數
.transfrom() df func 參考.agg
*args
**kwargs
.groupby() obj 對數據進行分組, 分組后使用sum之類的方法可以計算分組后的結果
by [c1, c2]: 選中某些列作為分組標准
axis=0
level=None 多級索引的級別名稱
as_index=True 分組的列是否作為結果的索引
sort=True  
group_keys=True  
squeeze=False  
**kwargs  
.rolling() obj 指定窗口, 步長為1移動窗口, 可對窗口中內容分別進行運算, 比如.sum()
windows 窗口大小(n行/列)
min_periods=None 允許的最小窗口
freq=None  
center=False 是否將計算結果放到中心而不是右側
win_type=None 參考scipy.signal(默認所有點均勻加權)
on=None 在指定列來計算滾動窗口而不是索引(此列將不參與計算)
axis=0
closed=None  
.expanding() obj 累計計算, 比如加.sum()累加等
min_periods=1 參考.rolling
freq=None
center=False
axis=0
.ewm() obj  
 計算/描述統計  (轉到首行)
.abs() df 對所有元素求絕對值, 僅適用於全為數字的對象
.all() S/df 判斷每一列(行)是否全為True
axis=None
bool_only=None 是否僅計算bool類型的值
skipna=None  
level=None 用於指定多級索引
**kwargs  
.any() S/df 判斷每一列(行)是否存在True (參數同.all)
.clip() df 限定取值范圍(范圍外的的將被更新為設定的最小值或最大值)
lower=None float或array_like. 最小值
upper=None 最大值
axis=None
inplace=False 是否本地修改
*args  
**kwargs  
.clip_lower() df 同.clip, 但只給出下限
threshold 界限值
.clip_upper() df 同.clip_lower, 但給出的是上限值
.corr() df 計算列的成對相關性, 不包括Na值
method='pearson' 'pearson': 標准相關系數
'kendall'
'spearman'
min_periods=1  
.corrwith() df 計算兩個df之間的成對相關系數
other df
axis=0
drop=False  
.count() S/df 統計, 統計非NaN的數量
axis=0 軸  {0 or 'index', 1 or 'columns'}
level=None 如果軸是MultiIndex, 則沿指定級別進行計數, 折疊到DataFrame中
numeric_only=False 是否僅對 float, int, bool 類型數據進行統計
.cov() df 計算列的成對協方差, 不包括NA
min_periods=None 每列所需的最小觀察次數, 以獲得有效結果
.cummax() df 下面一個值更新為其上面最大的一個值(即累積最大值)
axis=None
skipna=True 是否忽略空值, False: Na下面全部被更新為Na
.cummin() df 參考.cummax(), 但更新為累積最小值
.cumprod() df 參考.cummax(), 但更新為累積積
.cumsum() df 參考.cummax(), 但更新為累積和
.describe() df 生成統計描述, count, mean, std, min, max, ...
percentiles=None 輸出相應的百分位數0~1, 默認 [.25, .5, .75]
include=None 返回到結果中的白名單(列)
'all': 所有列都將包含在輸出中
list_like: 將結果限制為指定類型, np.number顯示數字類型的統計結果, np.object顯示對象類型的統計結果, 'O'顯示字符串類型的統計結果
None: 結果將包含所有數字列
exclude=None 從結果中省略的黑名單, list_like or None
.diff() df 下面的值跟上面的差
periods=1 下面值跟上面第 periods 個值的差
axis=0
.eval()   將字符串轉換為表達式
expr 'a+b': 返回df的a列與b列相加的結果
'c=a+b': 新增一列c為a列與b列相加的結果
'1+1': 返回1+1的結果
inplace=False 是否本地修改
**kwargs 更多參數參考pandas.eval()
.kurt() S/df 無偏峰度
axis=None
skipna=None(True) 計算時是否排除空值
level=None 如果軸是MultiIndex, 則沿指定級別進行計算, 返回df
numeric_only=None 是否僅對 float, int, bool 類型數據進行計算
       
       
 重新索引/選擇/標簽操作  (轉到首行)
.add_prefix() df prefix 將列標簽前面加上前綴prefix
.add_suffix() df suffix 將列標簽前面加上后綴suffix
.align() tuple 更新索引並以(df1, df2)的形式返回, 缺失值以nan補全
other df或Series
join='outer' 'outer': 新索引為s與s2的並集
'inner': 新索引為s與s2的交集
'left' : 新索引為s的索引
'right': 新索引為s2的索引
axis=None
level=None 指定多級索引的級別
copy=True 是否返回新對象
fill_value=None 缺失值使用的值, 默認為np.nan
method=None  
limit=None  
fill_axis=0  
broadcast_axis=N 沿該軸廣播
.drop() df 刪除對應索引或標簽
labels=None 要刪除的行(列), 單一標簽或list_like
axis=0
index=None 0.21新增, 相當於(label, axis=0)
columns=None 0.21新增, 相當於(label, axis=1)
level=None 指定多級索引的級別
inplace=False 是否本地修改
errors='raise' 'ignore': 忽略錯誤
.drop_duplicates() df 刪除重復項
subset=None 列標簽或標簽序列, 只考慮識別選中列的重復項, 默認所有列
keep='first' 'first': 僅保留第一次出現的副本(默認)
'last': 刪除重復項, 但最后一項除外
False: 刪除所有重復項
inplace=False 是否本地修改
.duplicated() df 返回是否是重復項的bool表示結果
subset=None 列標簽或標簽序列, 只考慮識別選中列的重復項, 默認所有列
keep='first' 'first': 除第一次出現外, 標記重復為True
'last': 除了最后一次出現, 標記重復為True
False: 將所有重復項標記為True
.equals() bool other 判斷兩個df中的元素是否相同, 同位置的nan被識別為相同
.filter() df 子集查詢
items=None list_like: [index or columns]
like=None string: 保留含有此字符串的那些 columns or index
regex=None 使用正則匹配
axis=None 軸, 默認為columns
.first() df 基於時間的子集查詢
offset '10D': 表示取出前10天的數據
.head() df n=5 顯示前n條數據
.idxmax() Series 返回請求軸上最大值對應的索引(或標簽)
axis=0 默認返回每一列最大值對應的索引, 標簽作為索引, 查找到的索引作為值
skipna=True 是否排除空值
.idxmin() Series 同上不過是最小值
.last() df 同.first(), 不過是后n天
.reindex() df 根據新索引/標簽返回數據, 原數據中存在的索引/標簽對應的值將被返回, 新的索引/標簽對應的值默認為nan
labels=None 新的標簽/索引, 根據axis值來定, 默認索引
index=None 新索引
columns=None 新標簽
axis=None
method=None {None, ‘backfill’/’bfill’, ‘pad’/’ffill’, ‘nearest’}: 填充方法
copy=True 是否返回一個新對象
level=None 索引/標簽級別
fill_value=nan 缺失值填充
limit=None 向前或向后填充的連續最大填充次數
tolerance=None 公差???
.reindex_axis() df 同 reindex() 不過沒有 index 和 columns 參數
.reindex_like() df 新對象的 索引/標簽 同傳入的df的 索引/標簽 相同
other 傳入的df
method, copy, limit, tolerance
.rename() df 更改 索引/標簽 名
mapper=None fun, dict-like: 結合axis使用, 表示 索引/標簽
index=None 更改索引
columns=None 更改標簽
axis=None
copy=True 是否生成新對象
inplace=False 是否本地修改
level=None 多級索引的操作級別
.rename_axis() df 同上: mapper, axis=0, copy, inplace
.reset_index() df 將索引作為df中的一列值
level=None 多級索引, 操作的索引級別
drop=False 是否刪除索引轉換出來的列
inplace=False 是否本地修改
col_level=0 如果columns是多級的, 轉換出來的列的標簽名的級別
col_fill='' 指定多級索引其它級別的name, None表示重復索引名
.sample() df 隨機返回n個樣本
n=None 返回的項目數, 默認1
frac=None 返回的百分比, 0.0-1.0, 不能與n同時使用
replace=False 是否允許重復
weights=None None: 等概率加權
Series: 相同索引的被設置為對應權重, 未出現的被設置為0
random_state=None 隨機數種子
axis=None 軸, 默認為0
.select() df 返回滿足條件的數據
crit function: 在每個 索引/標簽 上調用, 返回 bool 的函數
axis=0
.set_index() df 將某些列作為索引
keys column, [columns], [[跟df等長的其它來源索引]]
drop=True 是否刪除作為索引的那些列
append=False 是否將列追加到現有索引
inplace=False 是否本地修改
verify_integrity=False 是否檢查新索引, False會直到需要時再檢查
.tail() df n=5 返回最后n行
.take() df 返回指定行/列
indices [int]: 返回指定的那些行/列
axis=0 行/列
convert=None 是否允許使用負指數, 默認True, 0.21.0 被取消, 始終允許
is_copy=True 是否返回原始對象的副本
**kwargs  
.truncate()   截取兩個 索引/標簽 之間的數據
before=None 截斷此值之前的所有數據
after=None 截斷此值之后的所有數據
axis=None 軸, 默認操作索引
copy=True 是否拷貝
 缺失數據處理  (轉到首行)
.dropna() df 刪除含有na的行(列)
axis=0
how='any' {'any', 'all'}
thresh=None 有效值個數, 有效值低於此值的行(列)被刪除
subset=None list_like. 列(行)標簽列表, 只考慮列表中的列(行)
inplace=False 是否本地修改
.fillna() df 使用指定方法填充空值
value=None 標量: 使用此值替換na值
dict/Series: 對應標簽的列按照對應的值填充
df: 對應為值的值填充對應位置
method=None {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}
axis=None {0 or ‘index’, 1 or ‘columns’}
inplace=False 是否本地修改
limit=None 每行(列)最大填充次數
downcast=None  
**kwargs  
.replace() df 將to_replace中給出的值替換為value
to_replace=None str: 字符串精確匹配
regex: 正則表達式匹配
list: 若value也是list則需相同長度, 一一對應替換
dict:
None:
value=None 參考.fillna
inplace=False 是否本地修改
limit=None 每行(列)最大填充次數
regex=False True: 將to_replace作為正則表達式解析
method='pad' {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}
axis=None {0 or ‘index’, 1 or ‘columns’}
 形狀變換, 排序, 轉置  (轉到首行)
.pivot() df 重新整形數據(數據透視表), 參考pd.pivot()
index=None 作為索引的列
columns=None 作為列標簽的列
values=None 作為值的列
.reorder_levels() new obj 對對及索引進行重排
order [str or int]: 按指定順序對索引進行重排, 不能遺漏和重復
axis=0 對哪里進行重排
.sort_values() df 按值排序 0.17.0
by str or list of str: 在這些列上排序
axis=0 {0 or ‘index’, 1 or ‘columns’}: 默認按行排序
ascending=True bool or bools: 是否按升序排序, 如果是bools則長度需和by相同
inplace=False 是否在本地修改
kind='quicksort' {‘quicksort’, ‘mergesort’, ‘heapsort’}: 排序算法, 其它算法只支持單列
na_position='last' {‘first’, ‘last’}: 空值放在開頭或結尾(默認放在結尾)
.sort_index() df 對索引或列標簽排序
axis=0 默認對索引進行排序
level=None int or level name or list: 需要排序的索引級別
ascending=True 是否升序排序
inplace=False 是否本地修改
kind='quicksort' 排序算法
na_position='last' {‘first’, ‘last’}: 空值放在開頭或結尾(默認放在結尾)
sort_remaining=True 按指定級別排序后是否對其他級別進行排序(按順序)
by=None 無效參數??
.nlargest() df 對指定列進行降序排序並截取n個, 可結合groupby使用
n int: 截取的個數
columns list or str: 指定降序排序的列
keep='first' {‘first’, ‘last’}: 對於重復值保留第一次(或最后一次)出現的
.nsmallest() df 同 .nlargest() 不過是升序排序
.swaplevel() new obj 對指定的兩個索引級別進行交換
i=-2, j=-1 int, string
axis=0 對index還是對columns執行
.stack() df/S 索引作為前n級索引, 最后一級columns作為第n+1級索引, 剩余columns作為新columns
level=-1 int, string, list: 指定堆疊到索引的columns的級別
dropna=True 是否刪除沒有有效值的行
.unstack() df/S 將多級索引拆成新 index 和 columns
level=-1 int, string, list: 要作為columns的索引級別
fill_value=None 缺失值填充
.melt() df 將columns作為某列值
id_vars=None 作為id的列, 保持不變
value_vars=None 作為值的列
var_name=None 默認 'variable' columns名生成的列的列名
value_name='value' 值列的列名
col_level=None 如果columns是多級的則使用此指定級別進行操作
.T df 轉置
.to_panel() Panel 將df轉換為 3D 的Panel
.to_xarray()   ???
.transpose() df *args, **kwargs 轉置
 組合/加入/合並  (轉到首行)
.append() df 追按照列標簽進行追加操作, 缺失使用nan填充
other df
ignore_index=F 是否不使用索引標簽
verify_integrity=F 是否不允許存在重復索引
.assign() df 新增列
**kwargs 列名 = func : 傳入df, 返回一列值的函數
列名 = 標量: 此列值都為此標量
列名 = list_like : 跟df同長度
列名 = Series : Series中跟df索引相同的作為新列的值, 缺失nan
.join() df 新增列
other df: 列標簽不能跟左側df重復(重復的話需設置suffix)
Series: 需要有name屬性
list: [df]
on=None 列名, 與右側df索引對齊的列而不是索引
how='left' 'left': 新df的索引參照左側df
'right': 新df的索引參照右側df
'outer': 新df的索引參照兩個df索引的並集
'inner': 新df的索引參照兩個df索引的交集
lsuffix='' 若列標簽重復, 左側df的標簽將被加上后綴
rsuffix='' 若列標簽重復, 右側df的標簽將被加上后綴
sort=False 是否對結果按照索引排序
.merge() df 可實現根據左右df某兩列的值進行合並
right df
how='inner' 參考.join
on=None 左右兩個df都存在的列, 將在此列上合並
left_on=None 左側df要與右側df要對齊的列
right_on=None 右側df要與左側df要對齊的列
left_index=False 左側df是否使用索引與右側對齊
right_index=False 右側df是否使用索引與左側對齊
sort=False 結果是否按照索引排序
suffixes=('_x','_y') 重復列后綴
copy=True 是否生成新對象
indicator=False 是否顯示此行數據來源('left_only', 'right_only', 'both')
True: 此列標簽將被設置為'_merge'
str: 設置此列標簽為此字符串
validate=None 0.21新增
.update() df 將左側df相應列相同索引的值更新為右側的值, 不存在則保留原值(本地修改)
other df, 有name屬性的Series
join='left' 無其它取值, 此參數不能被設置為其它值
overwrite=True 覆蓋?????
filter_func=None  
raise_conflict=F 若兩個df存在同一數據來源, 將報錯
 時間序列相關  (轉到首行)
       
 繪圖  (轉到首行)
       
 序列化/IO/轉換  (轉到首行)
       
 稀疏  (轉到首行)   
       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM