petl函数表
petl
文档地址: https://petl.readthedocs.io/en/latest/index.html
Extract/Load
可以读取 csv pickle text xml html json database excel array hdfs 等文件
Transfrom 转换
Basic
petl.transform.basics.
- head(table, n=5) 取开始的行
 - tail(table, n=5) 取尾部的行
 - rowslice(table, *sliceargs) 对行做切片
 - cut(table, *args, **kwargs) 取指定列
 - cutout(table, *args, **kwargs) 排除指定列
 - movefield(table, field, index) 移动列到新的位置
 - cat(*tables, **kwargs) 连接两个表
 - stack(*tables, **kwargs) 连接两个表,不匹配表头
 - skipcomments(table, prefix) 跳过包含指定前缀的行
 - addfield(table, field, value=None, index=None, missing=None) 添加一个新的字段
 - addcolumn(table, field, col, index=None, missing=None) 添加新的数据列(和addfield有些相似)
 - addrownumbers(table, start=1, step=1, field=’row’) 添加行计数
 - addfieldusingcontext(table, field, query) 添加字段,query是一个回调,把相邻三行作为三个参数传入
 - annex(*tables, **kwargs) join 两个或多个表,按行连接
 
Header
petl.transform.headers
- rename(table, *args, **kwargs) 修改名称
 - setheader(table, header) 设置表头
 - extendheader(table, fields) 扩展表头(可以用来补全表头信息)
 - pushheader(table, header, *args) 设置表头(将第一行当中数据,而不是表头)
 - prefixheader(table, prefix) 为表头添加前缀
 - suffixheader(table, suffix) 为表头添加后缀
 - sortheader(table, reverse=False, missing=None) 排序
 - skip(table, n) 跳过行的项不为 n 的行
 
Converting
petl.transform.conversions
- convert(table, *args, **kwargs) 转换(包括数据类型,格式,替换,lambda 等)
 - convertall(table, *args, **kwargs) 同convert
 - convertnumbers(table, strict=False, **kwargs) 转换为数值
 - replace(table, field, a, b, **kwargs) 替换
 - replaceall(table, a, b, **kwargs) 替换全部
 - format(table, field, fmt, **kwargs) 格式化
 - formatall(table, fmt, **kwargs) 格式化全部
 - interpolate(table, field, fmt, **kwargs) 插入
 - interpolateall(table, fmt, **kwargs)
 - update(table, field, value, **kwargs) 更新
 
Selecting rows
petl.transform.selects
- select(table, *args, kwargs) 根据条件选择行 (扩展出各种 select 的快捷方法
 - selectusingcontext(table, query) 基于上一行和下一行来选择数据
 - rowlenselect(table, n, complement=False) 选择长度为n的行
 - facet(table, key) 按指定的key分组,将返回值映射到字典
 - biselect(table, *args, **kwargs) 拆分成两个表,一个为选择的行,一个为抛弃的行
 
Regular expressions
petl.transform.regex
- search(table, *args, **kwargs) 查询返回匹配行
 - searchcomplement(table, *args, **kwargs) 查询返回不匹配的行
 - sub(table, field, pattern, repl, count=0, flags=0) 替换
 - split(table, field, pattern, newfields=None, include_original=False, maxsplit=0, flags=0) 分割指定fields
 - capture(table, field, pattern, newfields=None, include_original=False, flags=0, fill=None) 分组,通过表达式分组来分割fields
 
Unpacking compound values
petl.transform.unpacks
- unpack(table, field, newfields=None, include_original=False, missing=None) 拆分 list 或 tuples
 - unpackdict(table, field, keys=None, includeoriginal=False, samplesize=1000, missing=None) 拆分 dictionary
 
Transforming rows
petl.transform.maps
- fieldmap(table, mappings=None, failonerror=False, errorvalue=None) 转换表,在输入与输出之间映射
 - rowmap(table, rowmapper, header, failonerror=False) 转换表,函数
 - rowmapmany(table, rowgenerator, header, failonerror=False) 转换表,将行映射到任意行
 - rowgroupmap(table, key, mapper, header=None, presorted=False, buffersize=None, tempdir=None, cache=True)
 
Sorting
petl.transform.sorts
- sort 排序
 - mergesort 多个表排序,输出一个表
 - issorted 判断是否为排序表
 
Joins
petl.transform.joins
- join 根据指定的键连接表
 - leftjoin 左连接
 - lookupjoin 左连接,如果右表多,任意选择行
 - rightjoin 右连接
 - outerjoin 完全连接,保留所有,为空填充None
 - crossjoin 笛卡尔连接
 - antijoin 返回左表中没有在右表出现的行
 - unjoin 将一个表拆成两个表
 - hashjoin
 - hashleftjoin
 - hashlookupjoin
 - hashrightjoin
 - hashantijoin
 
Set operations
petl.transform.setops
- complement 返回a中不在b中的行
 - diff 查找两个表之间的差异,返回两个表,分别为b表不在a中的,a表不在b中的
 - recordcomplement 查找不在b中的记录
 - recorddiff 查找两个表之间的差异
 - intersection 返回a也在b中的数据
 - hashcomplement
 - hashintersection
 
Deduplicating rows
petl.transform.dedup
- duplicates 选出给定键具有重复的行
 - unique 选出给定键唯一行
 - conflicts 选出相同键值,但其他行不同的
 - distinct 返回表中不同行
 - isunique 判断是否唯一
 
Reducing rows (aggregation)
petl.transform.reductions
- aggregate 聚集,对指定键做聚合
 - rowreduce 对行根据指定键做reduce
 - mergeduplicates 合并给定键下的重复行
 - merge 根据指定键合并表
 - fold python reduce 操作
 - groupcountdistinctvalues
 - groupselectfirst
 
‘’’
还有很多,不想写了。。。
‘’’
