python库--pandas--DataFrame

转换    索引,迭代    运算符    功能应用,分组及窗口    计算/描述统计

重新索引/选择/标签操作    缺失数据处理    形状变换/排序/转置

组合/加入/合并    时间序列相关    绘图    序列化/IO/转换    稀疏

 点击打开API: 官方    中文

方法返回值类型参数说明
DataFrame()dfdata=None2D数据或字典
index=None索引
columns=None列标签
dtype=None数据类型
copy=False是否复制数据
属性及底层数据结构
.as_matrix()ndarraycolumns=None返回指定列(默认全部)
.get_dtype_counts()  返回dtype的计数结果
.get_ftype_counts()  返回ftype的计数结果
.select_dtypes()df选择或排除指定数据类型的列
include=None标量或list_like, 要选择的列
exclude=None标量或list_like, 要排除的列
.memory_usage()  Seriesdf的内存使用情况
index=True索引是否参与计算
deep=False是否计算df引用的对象的内存使用情况
.index 行标签
.columns 列标签
.valuesndarraydf的值
.dtypesSeriesdf每一列的数据类型
.ftypesSeries返回df每一列是稀疏还是稠密, 以及数据类型
.axeslist返回 [行标签, 列标签]
.ndimint轴数
.sizeintdf的元素数量
.shapetupledf的形状
 转换  (转到首行)
.astype()df转换数据类型
dtypenp.dtype 或 {列名: np.dtype}
copy=True是否复制基层数据
errors=’raise’‘raise’: 转换失败则报错
‘ignore’: 转换失败则保留原数据类型
**kwargs更多关键字参数
.infer_objects()df试图推断更好的dtypes
.copy()df拷贝数据
deep=TrueFalse: 同赋值号, True: 拷贝数据, 但不会深层拷贝
.isnull()df判断对应位置元素是否是空值, 0.22版本新增.isna()
.notnull()df判断对应位置元素是否不是空值, 0.22版本新增.notna()
索引, 迭代  (转到首行)
.head()dfn=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()Seriesitem删除并返回指定列
.tail()dfn=5返回后n行
.xs() 返回指定行或列
key行标签或列标签, 可以是Multilndex (c_name or int)
axis=0
level=None标量或list_like. 指定key是多级索引中的哪几级
drop_level=True是否删除level指定的那几级索引
.isin()df判断元素是否在values中
valueslist: 判断所有元素是否在此列表中
dict: {c: []} 判断对应列的值是否在字典对应列表中
df: 对应列名, 包含且index相同才返回True
.where()df把df中不满足条件的那些值替换为other
cond跟df同形状的bool元素组成的2D数据
oter=nan标量或df. False对应的值替换为other
inplace=False是否本地修改
axis=Nonedf和other对齐的轴, 另外一个轴按顺序对齐
level=None如有需要, 对齐级别
errors=’raise’此参数目前无效
try_cast=False尝试将结果转换为输入类型
raise_on_error=N0.21弃用
.mask()df与where相反, 将满足条件的替换为other
.query()df返回满足条件的行
expr比如 ‘c1 > c2’ 返回满足c1>c2的那些行 (也可用@符号调用变量)
inplace=False是否本地修改
**kwargspandas.eval()
运算符  (转到首行)
.add()df加法运算, 类似df+other
other常量, Series或df
axis=’columns’{0, 1, ‘index’, ‘columns’}, other为Series时生效
level=Noneint或name. 在一个级别上广播
fill_value=None用来填充缺失值的值, 若两个df位置都丢失, 结果将会丢失
.sub; .mul; div; .truediv; .floordiv; .mod; .pow –   *   /   /   //   %   **
.radd; .rsub; …右侧运算, 即 other – df 等
.lt ; .gt ; .le ; .ge ; .ne ; .eq <   >   <=   >=   !=   ==
.combine()df使用自定义函数运算
otherdf
func传入两个Series(两个df的对应列), 返回一个Series
fill_value=None标量
overwrite=True 
.combine_first()dfother按照索引求并集, 优先保留左侧值
功能应用, 分组及窗口  (转到首行)
.apply()
       
df
       
对df中的每一行(列)执行操作
func传入一个Series, 返回一个Series
axis=00或’index’: 传入的是列
1或’columns’: 传入的是行
broadcast=False是否广播, 对于聚合函数, 返回和传播值相同大小的对象
raw=FalseTrue: 传入函数的将是ndarray而不是Series(性能更好)
reduce=NoneTrue: 返回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=00: 对每一列执行操作, 1:对每一行执行操作
*args传递给函数的位置参数
**kwargs传递给函数的关键词参数
.transfrom()dffunc参考.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=Nonefloat或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之间的成对相关系数
otherdf
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()dfprefix将列标签前面加上前缀prefix
.add_suffix()dfsuffix将列标签前面加上后缀suffix
.align()tuple更新索引并以(df1, df2)的形式返回, 缺失值以nan补全
otherdf或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=None0.21新增, 相当于(label, axis=0)
columns=None0.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()boolother判断两个df中的元素是否相同, 同位置的nan被识别为相同
.filter()df子集查询
items=Nonelist_like: [index or columns]
like=Nonestring: 保留含有此字符串的那些 columns or index
regex=None使用正则匹配
axis=None轴, 默认为columns
.first()df基于时间的子集查询
offset’10D’: 表示取出前10天的数据
.head()dfn=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=Nonefun, 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=NoneNone: 等概率加权
Series: 相同索引的被设置为对应权重, 未出现的被设置为0
random_state=None随机数种子
axis=None轴, 默认为0
.select()df返回满足条件的数据
critfunction: 在每个 索引/标签 上调用, 返回 bool 的函数
axis=0
.set_index()df将某些列作为索引
keyscolumn, [columns], [[跟df等长的其它来源索引]]
drop=True是否删除作为索引的那些列
append=False是否将列追加到现有索引
inplace=False是否本地修改
verify_integrity=False是否检查新索引, False会直到需要时再检查
.tail()dfn=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=Nonelist_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=Nonestr: 字符串精确匹配
regex: 正则表达式匹配
list: 若value也是list则需相同长度, 一一对应替换
dict:
None:
value=None参考.fillna
inplace=False是否本地修改
limit=None每行(列)最大填充次数
regex=FalseTrue: 将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
bystr or list of str: 在这些列上排序
axis=0{0 or ‘index’, 1 or ‘columns’}: 默认按行排序
ascending=Truebool or bools: 是否按升序排序, 如果是bools则长度需和by相同
inplace=False是否在本地修改
kind=’quicksort’{‘quicksort’, ‘mergesort’, ‘heapsort’}: 排序算法, 其它算法只支持单列
na_position=’last’{‘first’, ‘last’}: 空值放在开头或结尾(默认放在结尾)
.sort_index()df对索引或列标签排序
axis=0默认对索引进行排序
level=Noneint 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使用
nint: 截取的个数
columnslist or str: 指定降序排序的列
keep=’first’{‘first’, ‘last’}: 对于重复值保留第一次(或最后一次)出现的
.nsmallest()df同 .nlargest() 不过是升序排序
.swaplevel()new obj对指定的两个索引级别进行交换
i=-2, j=-1int, string
axis=0对index还是对columns执行
.stack()df/S索引作为前n级索引, 最后一级columns作为第n+1级索引, 剩余columns作为新columns
level=-1int, string, list: 指定堆叠到索引的columns的级别
dropna=True是否删除没有有效值的行
.unstack()df/S将多级索引拆成新 index 和 columns
level=-1int, 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是多级的则使用此指定级别进行操作
.Tdf转置
.to_panel()Panel将df转换为 3D 的Panel
.to_xarray() ???
.transpose()df*args, **kwargs转置
 组合/加入/合并  (转到首行)
.append()df追按照列标签进行追加操作, 缺失使用nan填充
otherdf
ignore_index=F是否不使用索引标签
verify_integrity=F是否不允许存在重复索引
.assign()df新增列
**kwargs列名 = func : 传入df, 返回一列值的函数
列名 = 标量: 此列值都为此标量
列名 = list_like : 跟df同长度
列名 = Series : Series中跟df索引相同的作为新列的值, 缺失nan
.join()df新增列
otherdf: 列标签不能跟左侧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某两列的值进行合并
rightdf
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=None0.21新增
.update()df将左侧df相应列相同索引的值更新为右侧的值, 不存在则保留原值(本地修改)
otherdf, 有name属性的Series
join=’left’无其它取值, 此参数不能被设置为其它值
overwrite=True覆盖?????
filter_func=None 
raise_conflict=F若两个df存在同一数据来源, 将报错
 时间序列相关  (转到首行)
    
 绘图  (转到首行)
    
 序列化/IO/转换  (转到首行)
    
 稀疏  (转到首行)   
    

 

    原文作者:spark
    原文地址: https://www.cnblogs.com/P--K/p/8284167.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞