导图社区 数据清洗与准备(数据分析pandas库)
这个接着上一篇pandas入门,如果有错请指正呀
编辑于2020-01-13 08:11:39数据清洗与准备
处理缺失值
NA处理方法
dropna
根据每个标签的值是否缺失数据来筛选轴标签,并根据允许丢失的数据量来确定阈值
fillna
用某些值来填充数据或使用插值方法(如‘ffill'或'bfill')
isnull
返回表明哪些值是缺失值的布尔值
notnull
isnull的反函数
过滤缺失值
方法:
dropna
参数及其注意事项:
参数
how
删除方法
all
只有那一行或列全为nan才删除
any
默认,只要有nan就删除那一行或列
axis
删除轴
默认是行,传入axis=1可以对列
thresh
保留一定行不删除,具体行数看参数的值
inplace
是否原地操作,默认不会
补全缺失值
方法
fillna
参数及其注意事项
参数
替换值value
frame.fillna(x)
把里面所有缺失值改为x
frame.fillna({'columns_name':'x'})
传入字典为每一列的缺失值量身定做替换值
axis
需要填充的轴,默认0
limit
用于向前或向后填充时最大填充范围
替换方法method
pad/ffill
用前一个非缺失值填充现在的缺失值
backfill/bfill
用后一个非缺失值填充现在的缺失值
None
不填充
inplace
是否原地操作
数据转换
删除重复值
方法:
frame.duplicated()
返回值
一个布尔值Series,反应的是每一行是否与之前出现过的行相同
frame.drop_duplicates()
返回值
返回一个DataFrame,内容是duplicated返回数组中为False的部分
参数及其注意事项
参数
判断范围(subse):
默认是判断列,且是所有列一起看,可以再传入需要判断的列名
保留值(keep)
默认是保留第一个观测到的值,传入keep='last'将会返回最后一个
drop_duplicates独有(inplace)
是否原地操作
使用函数或映射进行数据转换
方法
map
接受字典映射
Series.map(dict)
会生成一个Series,值按照之前Series里的原数据一样排列,不过具体的值已经转换为dict中对应的值
接收函数
Series.map(f)
函数常为lambda匿名函数,会返回一个Series,值为把原来Series中的每个值经过f函数处理过后的值
applymap
DataFrame独特使用,用法和map差不多
apply
可以Series和DataFrame共用
替代值
fillna
可以用,但不针对用
replace
参数以及注意事项
inplace
是否原地操作
to_replace
需要替换的值,可以为一个列表
value
替换后的值,如果想为不同值替换不同值,也用列表且和to_replace一样大小
limit
整数,默认值无
向前或向后填充的最大尺寸间隙。
regex
bool或与to_replace相同的类型,默认为False 是否将to_replace和/或value解释为正则表达式。如果是,True则to_replace 必须为字符串。或者,这可以是正则表达式或正则表达式的列表,字典或数组,在这种情况下 to_replace必须为None。
method
pad/ffill
backfill/bfill
也可以传入一个字典,来对应to_replace和value
重命名轴索引
方法:
map
data.index.map()
rename
frame.rename(index=,columns=)
索引和列标签可以是某种操作如str.upper,也可以是字典型对象,指定把哪个替换成哪个
rename参数及其注意事项
index
columns
replace
离散化和分箱
方法
pandas.cut()
返回值
类型:
特殊的Categorical对象
返回形式或内容:
一个列表里有着小列表,每个小列表是对应位置的原来的要分组的数据所处的区间
内部包含:
一个categories数组
属性:
codes
返回一个数组,数组内的数据是原来要分类的数据,到底在那个组里,从0开始给分组标号。
categories
pandas.qcut()
参数及其注意事项
cut参数
原始数据(x)
必须是一维的
箱边(bins)
int,标量序列或pandas.IntervalIndex 分级依据。 int:定义x范围内的等宽bin数。x的范围在每一侧都扩展了0.1%,以包括x的最小值和最大值。 标量序列:定义面元边缘以允许非均匀宽度。x的范围没有扩展。 IntervalIndex:定义要使用的确切容器。
labels
数组或布尔值,可选 指定返回的垃圾箱的标签。必须与生成的垃圾箱长度相同。如果为False,则仅返回垃圾箱的整数指示符。这会影响输出容器的类型(请参见下文)。当bins是IntervalIndex 时,将忽略此参数。
precision
整数,默认3 存储和显示垃圾箱标签的精度。
right
布尔,默认为真 指示垃圾箱是否包括最右边。如果是 (默认值),则bin 表示(1,2],(2,3],(3,4] 。bin是IntervalIndex 时,将忽略此参数 。right == True [1, 2, 3, 4]
qcut参数
x
1d ndarray或系列
q
整数或分位数数组 分位数。分位数为10,四分位数为4,等等。分位数的替代数组,例如,四分位数为[0,.25,.5,.75,1.]
labels
数组或布尔值,默认为None 用作生成的垃圾箱的标签。必须与生成的垃圾箱长度相同。如果为False,则仅返回垃圾箱的整数指示符。
retbins
布尔,可选 是否返回(回收站,标签)。如果将bin作为标量给出,则很有用。
precision
int,可选 存储和显示垃圾箱标签的精度
检测和过滤异常值
frame.describe()
np.sign()
根据数据正负返回1或-1
frame.any()
概念:
返回是否有任何元素为True(可能在某个轴上)。 除非在系列中或沿着数据框轴上至少有一个元素为True或等效值(例如,非零或非空),否则返回False。
参数
子轴 : {0或'index',1或'columns',无},默认0 指出应减少的轴。 0 /'index':减少索引,返回其索引为原始列标签的Series。 1 /'columns':减少列,返回其索引为原始索引的Series。 无:减少所有轴,返回标量。 bool_only : 布尔值,默认为无 仅包括布尔列。如果为None,将尝试使用所有内容,然后仅使用布尔数据。未针对系列实施。 skipna : bool,默认为True 排除NA /空值。如果整个行/列为NA,而skipna为True,则结果为False(对于空行/列)。如果skipna为False,则将NA视为True,因为它们不等于零。 级别 : 整数或级别名称,默认为无 如果轴是MultiIndex(分层),则沿特定级别计数,并折叠为Series。 ** kwargs : 任意,默认无 其他关键字无效,但可以接受以与NumPy兼容。
置换和随机抽样
方法:
numpy.random.permutation()
frame.take()
frame.sample()/data.sample()
参数及其注意事项:
numpy.random.permutation()
x
如果x是一个数字,将返回range(x)打乱的数组,如果是一个数组,就会给他完美打乱
frame.take()
index : 类似数组 一个整数数组,指示要采取的位置。 axis: {0或'index',1或'columns',无},默认0 选择元素的轴。0表示选择行,1表示选择列。 is_copy : bool,默认为True 是否返回原始对象的副本。 **kwargs 与兼容numpy.take()。对输出没有影响。 返回值: 采取 : 与呼叫者相同的类型 类数组,包含从对象获取的元素。
frame.sample()/data.sample()
n:int,可选 从轴返回的项目数。不能与frac一起使用。如果frac = None,则默认= 1 。 frac:浮动,可选 要返回的轴项的分数。不能与n一起使用。 replace:布尔值,可选 样品有无更换。默认值= False。 weights:与str或ndarray类似,可选 默认的“无”导致相等的概率加权。如果通过系列,将与索引上的目标对象对齐。在采样对象中找不到的权重的索引值将被忽略,而在采样对象中没有权重的索引值将被分配为零。如果在DataFrame上调用,则在axis = 0时将接受列的名称。除非权重为Series,否则权重的长度必须与要采样的轴的长度相同。如果权重不等于1,则将它们归一化为总和1。权重列中的缺失值将被视为零。不允许使用inf和-inf值。 轴:整数或字符串,可选 采样轴。接受轴编号或名称。对于给定的数据类型,默认值为stat轴(对于Series和DataFrames为0,对于Panels为1)。 返回值: 与调用者类型相同的新对象
计算指标/虚拟变量
方法
pandas.get_dummies()
如果DataFrame中的一列有k个不同的值,那它就可以生成一个k列,值为1和0的矩阵或DataFrame。
参数及其注意事项
数据 :类 数组,系列或数据框 要获取虚拟指标的数据。 prefix : str,str列表或str的字典,默认为None 用于追加DataFrame列名称的字符串。在DataFrame上调用get_dummies时,传递长度等于列数的列表。或者,前缀 可以是将列名称映射到前缀的字典。 prefix_sep : str,默认'_' 如果附加前缀,则使用分隔符/分隔符。或传递带有前缀的列表或字典。 dummy_na : 布尔值,默认为False 如果忽略False NaN,请添加一列以指示NaN。 列 : 类似列表,默认为无 要编码的DataFrame中的列名。如果columns为“无”,则将转换所有对象或类别为 dtype 的列 。 sparse : bool,默认为False 是否应使用SparseArray(True)或常规NumPy数组(False)支持伪编码的列。 drop_first : 布尔值,默认为False 是否通过删除第一个级别从k个分类级别中获取k-1个虚拟对象。 0.18.0版中的新功能。 D型 : D型,默认np.uint8 新列的数据类型。仅允许单个dtype。
字符串操作
字符串对象方法
count
返回子字符串在字符串中的非重叠出现次数
endwith
如果字符串以后缀结尾就返回True
startwith
如果字符串以前缀开始就返回True
join
使用字符串作为间隔符,用于粘合其他字符串的序列
index
如果在字符串中能找到就返回子字符串中第一个字符的位置;没找到抛出异常
find
类似index,但没找到返回-1
rfind
返回子字符串中最后一次出现的第一个字符的位置;如果没找到就返回-1
replace
使用一个字符替换另一个字符
strip,rstrip,lstrip
修剪空白,包括换行符;相当于对每个元素进行x.strip()(以及rstrip,lstrip)。
split
使用分隔符将字符串拆开成列表
lower
将大写字母转为小写
upper
小写转大写
casefold
将字符转换为小写,并将任何特定于区域的变量组合转换为常见的可比较形式
ljust,rjust
左对齐或右对齐;用空格(或其他字符)填充字符串的相反侧以返回具有最小宽度的字符串。
正则表达式
生成匹配对象
regex = re.compile('模式',flags) regex.下面的方法
findall
将字符串中所有的非重叠匹配模式以列表形式返回
finditer
与findall类似,但返回迭代器
match
在字符串起始位置匹配模式,也可以将模式组建匹配到分组中,如果模式匹配上了,就返回匹配对象,否则返回None。
regex.match(text).groups()
返回匹配到的东西
split
根据模式,将字符串拆分为多个部分
search
扫描字符串的匹配模式,如果扫描到了,返回匹配对象,它可以匹配字符串任意位置。
regex.search(text).start()
起始索引
regex.search(text).end()
结尾索引
sub,subn
用替换表达式替换字符串中所有的匹配(sub)或第n个出现的匹配串(subn);使用符号\1,\2......来引用替换字符串中的匹配组元素。
regex.sub('替换为的东西',text)
上面要替换为的东西里面可以用\1....来表示匹配到的东西
pandas中的向量化字符串函数
cat
根据可选的分隔符按元素粘合字符串
contains
返回是否含有某个模式/正则表达式的布尔值数组
count
模式出现次数的计数
extract
使用正则表达式从字符串Series中分组抽取一个或多个字符串;返回的结果是每个分组形成的一列的DataFrame。
endswith
等价于对每个元素使用x.endwith(模式)
startswith
等价于对每个元素使用x.startwith(模式)
findall
找出字符串中所有模式/正则表达式匹配项,以列表返回
get
对每个元素进行索引(获得第i个元素)
isalnum
等于内建的str.isalpha
isalpha
同
isdecimal
同
isdigit
同
islower
同
isnumeric
同
isupper
同
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
消除字符串左边空白