Skip to content

Latest commit

 

History

History

5_dataNormalization

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

前言

数据分析和建模方面的大量变成工作都是用在数据准备上的:加载,清理,转换以及重塑.pandas和python标准库提供了一组高级的,灵活的,高效的核心函数和算法,它们使你能够轻松地将数据规整化为正确的形式

合并数据集

函数 说明
pandas.merge 可根据一个或多个键将不同DF中的行连接起来.SQL或其他关系型数据库的用户对此应该会比较熟悉,因为它实现的就是数据库的连接操作
pandas.concat 可沿着一条轴将多个对象堆叠到一起
combine_first 可以将重复数据编结在一起,用一个对象中的值填充另一个对象中的缺失值

merge函数的参数

函数 说明
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对象,带有标签的轴能够进一步推广数组的连接运算.具体的,需要考虑一下问题:

  • 如果各对象其它轴上的索引不同,那些轴应该是做并集还是交集?
  • 结果对象中的分组需要各不相同嘛?
  • 用于连接的轴重要吗?

concant函数参数

函数 说明
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 将数据的行"旋转"为列

python内置的字符串方法

函数 说明
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()