python库--pandas
| 数据操作 | |||
| 方法 | 返回值 | 参数 | 说明 |
| .melt() | df | 将df转换为标签和值两列, api中有举例 | |
| frame | DataFrame | ||
| id_vars=None | list_like: 保留, 不转换的列 | ||
| value_vars=None | list_like: 转换的列, 默认转换除id_vars外的所有列 | ||
| var_name=None | 存储标签的列的列名, 默认名字variable | ||
| value_name='value' | 存储值的列的列名 | ||
| col_level=None | 如果是多及索引则可用于指定使用的索引级别, 默认全部使用, 会生成多列标签列 | ||
| .pivot() | df | 点击查看实例 | |
| index | ndarray, Series, 不可以是列表, 三个参数长度要一致, 含几个不重复值就表示有多少行, 每个值重复次数必须一致, 且等于列数, 且index重复值相应位置columns必须是非重复值 | ||
| columns | 同上, 不过是列标签 | ||
| values | ndarray, Series | ||
| .pivot_table() | df | 数据透视表(点击查看实例) | |
| data | df | ||
| values=None | 需要计算的那些列 | ||
| index=None | 作为索引的列 | ||
| columns=None | 作为列标签的列 | ||
| aggfunc='mean' | 对values的计算方式 | ||
| fill_value=None | 用来代替缺失值的值 | ||
| margins=False | 结果是否显示总计行/列 | ||
| dropna=True | 不包含结果都是NaN的列 | ||
| margins_name='All' | margins=True时总计行/列的名称 | ||
| .crosstab | df | 类似于pivot() + pivot_table() | |
| .cut() | 划分数据, 返回每个值对应的区域 | ||
| x | list_like: 一维 | ||
| bins | int: 由最小和最大值计算等长面元分为n份 | ||
| list_like: [0,3,5]表示按(0,3],(3,5]进行划分 | |||
| right=True | True: 左开右闭; False: 左闭右开 | ||
| labels=None | 划分结果显示的标签, False: 用range(n)标号 | ||
| retbins=False | 是否返回bins设置的值(矢量, 整数会转换成对应的矢量) | ||
| precision=3 | 存储和显示分类标签的精度(默认3) | ||
| include_lowest=False | False:第一个间隔不包括左侧值,如(0,3]不含0. True:(<0,3] | ||
| .qcut() | 划分数据, 按照分位数进行划分 | ||
| x | list_like: 一维 | ||
| q | int: 按q分位数进行切割 | ||
| list_like: 分位数, 如[0, 0.5, 1]表示0%~50%, 50%~100% | |||
| labels=None | 划分结果显示的标签, False: 用range(n)标号 | ||
| retbins=False | 是否返回bins设置的值(矢量, 分位数会转换成对应的矢量) | ||
| precision=3 | 存储和显示分类标签的精度(默认3) | ||
| duplicates='raise' | 'raise': 如果bin值不是唯一的, 则引发错误 | ||
| 'drop': 忽略重复值 | |||
| .merge() | df | 根据两个df某列进行合并 | |
| left | df | ||
| right | df | ||
| how='inner' | 'inner': 取键的交集 | ||
| 'left': 保留左键的完整 | |||
| 'right': 保留右键的完整 | |||
| 'outer': 取键的并集 | |||
| 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新增 | ||
| 'one_to_one' or '1:1': 检查合并键在左右数据集中是否唯一 | |||
| 'one_to_many' or '1:m': 检查合并键在左侧数据集中是否是唯一的 | |||
| 'many_to_one' or 'm:1': 检查合并键在右侧数据集中是否是唯一的 | |||
| 'many_to_many' or 'm:m': 不做检查 | |||
| .merge_ordered() | df | 根据两个df某列进行合并, 并对缺失值按要求填充 | |
| left | df | ||
| right | df | ||
| on=None | 左右两个df都存在的列, 将在此列上合并 | ||
| left_on=None | 左侧df要与右侧df要对齐的列 | ||
| right_on=None | 右侧df要与左侧df要对齐的列 | ||
| left_by=None | 按选中的列分组, 填充将按照分组执行 | ||
| right_by=None | 按选中的列分组, 填充将按照分组执行 | ||
| fill_method=None | {'ffill', None} 数据的插值方法 | ||
| suffixes=('_x', '_y') | 重复列后缀 | ||
| how='outer' | {'left', 'right', 'outer', 'inner'} | ||
|
.merge_asof() 0.19.0 |
df | 合并两个df, 但不再是根据相等合并而是与离左侧最近的合并 | |
| left | df | ||
| right | df | ||
| on=None | 左右两个df都存在的列, 将在此列上合并. 必须有序而且要是数字列(时间, int, float) | ||
| left_on=None | 左侧df要与右侧df要对齐的列 | ||
| right_on=None | 右侧df要与左侧df要对齐的列 | ||
| left_index=False | 左侧df是否使用索引与右侧对齐 0.19.2 | ||
| right_index=False | 右侧df是否使用索引与左侧对齐 0.19.2 | ||
| by=None | |||
| left_by=None | |||
| right_by=None | |||
| suffixes=('_x', '_y') | 重复列后缀 | ||
| tolerance=None | |||
| allow_exact_matches=T | |||
| direction='backward' | |||
| .concat() | S/df | 多个S/df进行合并操作, axis=0 时相同标签的列对应追加, axis=1 时相当于合并列 | |
| objs | [S/df] | ||
| axis=0 | {0/’index’, 1/’columns’}: 操作轴 | ||
| join='outer' | {‘inner’, ‘outer’}: 做交集还是并集 | ||
| join_axes=None | [index]: | ||
| ignore_index=False | True: 将不使用原索引而是使用 0 ~ n-1 | ||
| keys=None | 新增一个最外层索引, 数量跟合并的 S/df 数量一致 | ||
| levels=None | |||
| names=None | [index_name]: 合并结果的多级索引名 | ||
| verify_integrity=False | 检查新的连接轴是否有重复项 | ||
| copy=True | 如果为False则不进行没有必要的数据复制 | ||
| .get_dummies() | df | 将元素作为标签, 用0和1表示相应索引位置是否是次元素 | |
| data | list_like, Series, df | ||
| prefix=None | 多列值加上相应前缀 | ||
| prefix_sep='_' | 前缀跟值之间的分隔符 | ||
| dummy_na=False | 是否显示空值结果 | ||
| columns=None | 列名 | ||
| sparse=False | 是否返回稀疏结果 | ||
| drop_first=False | 删除第一个元素生成的列 | ||
| .factorize() | Tuple | 将传入的值返回成一个 (labels, uniques) | |
| values | 1D | ||
| sort=False | 是否对值进行排序 | ||
| order=None | |||
| na_sentinel=-1 | |||
| size_hint=None | 提示哈希表大小 | ||
| .unique() | ndarray | values | 1D: 返回无重复值的结果 |
| .wide_to_long() | df | 提取并合并指定字符串开头的列 | |
| df | DataFrame | ||
| stubnames | str, [str]: 提取以指定字符串开头的列 | ||
| i | column: 用作索引的列 | ||
| j | 提取开头后剩余的内容会生成一列, 在此指定此列名 | ||
| sep='' | 分隔符 0.20 | ||
| suffix='\\d+' | 捕获正则表达式匹配的后缀 0.20 | ||
| 缺失数据 | |||
| isna() | bool/[bool] | obj | 判断给定对象的元素是不是空值 |
| isnull() | bool/[bool] | obj | 判断给定对象的元素是不是空值 |
| notna() | bool/[bool] | obj | 判断给定对象的元素是不是非空值 |
| notnull() | bool/[bool] | obj | 判断给定对象的元素是不是非空值 |
| 转换 | |||
| .to_numeric() | S/ndarray | 将给定数据转换为数字类型 | |
| arg | 1D | ||
| errors='raise' | 'raise': 无效的解析将引发异常 | ||
| 'coerce': 无效的解析将被设置为NaN | |||
| 'ignore': 无效的解析将返回输入 | |||
| downcast=None | 向下转换 0.19.0 | ||
| 'integer' or 'signed': 最小有符号int类型 (np.int8) | |||
| 'unsigned': 最小无符号int类型 (np.uint8) | |||
| 'float': 最小浮点数类型 (np.float32) | |||
| None: np.float64 | |||
| 处理日期时间 | |||
| .to_datetime() | 将输入值转换为datetime | ||
| arg | integer, float, string, datetime, 1D | ||
| errors='raise' | 'raise': 无效的解析将引发异常 | ||
| 'coerce': 无效的解析将被设置为NaT | |||
| 'ignore': 无效的解析将返回输入 | |||
| dayfirst=False | 是否将输入数据认为是 天-月-年 的格式识别 | ||
| yearfirst=False | 是否将输入数据认为是 年-月-天 的格式识别 | ||
| utc=None | |||
| box=True | True: 返回DatatimeIndex | ||
| False: 返回ndarray | |||
| format=None | 时间解析格式, %d%m%Y | ||
| exact=True | True: 需要精确的匹配格式 | ||
| False: 允许格式匹配目标字符串中的任何位置 | |||
| unit=None | 当输入整数或浮点数的时候, 用此参数指定单位(D,s,ms,us,ns), 默认 'ns' | ||
| infer_datetime_format=F | True 且没有给出格式, 将尝试推断字符串格式, 并且如果可以推断, 则切换到解析它们的更快方法 | ||
| origin='unix' | 定义参考日期, 那么整数或浮点数将按照从此日期开始计算 | ||
| .to_timedelta() | 将输入值转换为timedelta | ||
| arg, unit, box, errors | 参考.to_datetime() | ||
| .data_range() | |||

浙公网安备 33010602011771号