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/转换  (转到首行)
       
 稀疏  (转到首行)   
       

 

posted @ 2018-01-14 20:15  _殇  阅读(7392)  评论(0编辑  收藏  举报