数据分析和建模方面的大量变成工作都是用在数据准备上的:加载,清理,转换以及重塑.pandas和python标准库提供了一组高级的,灵活的,高效的核心函数和算法,它们使你能够轻松地将数据规整化为正确的形式
函数 |
说明 |
pandas.merge |
可根据一个或多个键将不同DF中的行连接起来.SQL或其他关系型数据库的用户对此应该会比较熟悉,因为它实现的就是数据库的连接操作 |
pandas.concat |
可沿着一条轴将多个对象堆叠到一起 |
combine_first |
可以将重复数据编结在一起,用一个对象中的值填充另一个对象中的缺失值 |
函数 |
说明 |
left |
参与合并的左侧DF |
right |
参与合并的右侧DF |
how |
'inner','outer','left',right'其中之一,默认为'inner' |
on |
用于连接的列名.必须存在于左右两个DF对象中.如果未指定,且其它连接键也未指定,则以left和right列名的交集作为连接键 |
left_on |
左侧DF中用作连接键的列 |
right_on |
右侧DF中用作连接键的列 |
left_index |
将左侧的行索引用作其连接键 |
right_index |
类似于left_index |
sort |
根据连接键对合并后的数据进行排序,默认为True.有时在处理大数据集时,禁用该选项可获得更好的性能 |
suffixes |
字符串值元组,用于追加到重叠列名的末尾,默认为('_x','_y').例如,如果左右两个DF对象都有'data',则结果中就会出现'data_x'和'data_y' |
copy |
设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中,默认总是复制 |
对于pandas对象,带有标签的轴能够进一步推广数组的连接运算.具体的,需要考虑一下问题:
- 如果各对象其它轴上的索引不同,那些轴应该是做并集还是交集?
- 结果对象中的分组需要各不相同嘛?
- 用于连接的轴重要吗?
函数 |
说明 |
objs |
参与连接的pandas对象的列表或字典.唯一必须要的参数 |
axis |
指明连接的轴向,默认为0 |
join |
'inner','outer'其中之一,默认为'outer'.指明其它轴上的索引时按交集(inner)还是并集(outer)进行合并 |
join_axes |
指明用于其它n-1条轴的索引,不执行并集/交集运算 |
keys |
与连接对象有关的值,用于形成连接轴上的层次化索引,可以是任意值的列表或数组,元组数组,数组列表(如果将levels设置成多技数组的话) |
levels |
指定用作层次化索引个级别上的索引,如果设置了keys的话 |
names |
用于创建分层级别的名称,如果设置了keys和levels的话 |
verify_integrity |
监察对象新轴上的重复情况,如果发现则引发异常.默认(False)允许重复 |
ignore_index |
不保留连接轴上的索引,产生一组新索引range(total_length) |
层次化索引为DataFrame数据的重排任务提供了一种具有良好一致性的方式.主要方式有二:\
函数 |
说明 |
stack |
将数据的列"旋转"为行 |
unstack |
将数据的行"旋转"为列 |
函数 |
说明 |
count |
返回子串在字符串中的出现次数(非重叠) |
enswith,startswith |
如果字符串以某个后缀结尾(以某个前缀开头),则返回True |
join |
将字符串用作连接其他字符串序列的分隔符 |
index |
如果在字符串中找到子串,则返回子串第一个字符所在的位置,如果没有找到,则引发valueerror |
find |
如果在字符串中找到子串,则返回第一个发现的子串的第一个字符串所在的位置.如果没有找到,则返回-1 |
rfind |
如果在字符串中找到子串,则返回最后一个发现的子串的第一个字符所在的位置.如果没有找到,则返回-1 |
replace |
用另一字符串替换制定子串 |
strip,rstrip,lstrip |
去除空白符(包括换行符).相当于对各个元素执行x.strip()(以及rstrp,lstrip) |
split |
通过指定的分隔符将字符串拆分成一组子串 |
lower,upper |
分别将字母字符转换为小写或大写 |
ljust,rjust |
用空格(或其他字符)填充字符串的空白侧以返回复合最低宽度的字符串 |
函数 |
说明 |
findall,finditer |
返回字符串中所有的非重叠匹配模式.findall返回的是由所有模式组成的列表,而finditer则通过一个迭代器逐个返回 |
match |
从字符串起始位置匹配模式,还可以对模式各部分进行分组.如果匹配到模式,则返回一个匹配项对象,否则返回None |
search |
扫描整个字符串以匹配模式.如果找到则返回一个匹配对象.跟match不同,其匹配项可以位于字符串的任意位置,而不仅仅是起始处 |
split |
根据找到的模式将字符串拆分成数段 |
sub,subn |
将字符串中所有的(sub)或前n个(subn)模式替换为指定表达式.在替换字符串中可以通过\1,\2等符号表示各项分组 |
函数 |
说明 |
cat |
实现元素级的字符串连接操作,可指定分隔符 |
contains |
返回表示个字符串是否含有指定模式的布尔型数组 |
count |
模式的出现次数 |
enswith,startswith |
相当于对各个元素执行x.endswith(pattern)或x.startswith(pattern) |
findall |
计算各字符串的模式列表 |
get |
获取各元素的第i各字符 |
join |
根据指定的分隔符将Series中各元素的字符串连接起来 |
len |
计算各字符串的长度 |
lower,upper |
转换大小写.相当于对各个元素执行x.lower()或x.upper() |
match |
根据指定的正则表达式对各个元素执行re.match |
pad |
在字符串的左边,右边或左右两边添加空白符 |
center |
相当于pad(side='both) |
repeat |
重复值.例如,s.str.repeat(3)相当于对各个字符串执行x*3 |
replace |
用指定字符串替换找到的模式 |
slice |
对Series中的各个字符串进行子串截取 |
split |
根据分隔符或正则表达式对字符串进行拆分 |
strip,rstrip,lstrip |
去除空白符,包括换行符.相当于对各个元素执行x.strip(),x.rstrip(),x.lstrip() |