前言
在上一节数据分析 - pandas(4)中,我们讲到了pandas
的布尔索引,主要判断矩阵数据表的数据的大小,今天,我们来接着往下总结更多的内容。
字符串方法
方法 | 说明 |
---|---|
cat | 实现元素级的字符串连接操作,可指定分隔符 |
contains | 返回表示各字符串是否含有指定模式的布尔型数组 |
count | 模式的出现次数 |
endswith、startwith | 相当于对各个元素执行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() |
以上就是pandas中常用的字符串方法。
接下来我们来学习一下pandas中对于缺失数据的处理
缺失数据的样本
准备矩阵数据表
In [42]: df
Out[42]:
V W X Y Z
A NaN 2 NaN 4.0 5
B 6.0 7 8.0 0.0 10
C NaN 12 NaN 14.0 15
D 16.0 17 18.0 19.0 20
可以看到,上面的这组数据,存在NaN
,和0.0
通常情况下,我们的数据缺失就是这种现象
这里值得注意的是:pandas中当给某个数据转换为NaN时,此数据不需要为float类型。但是numpy必须为float类型
numpy和pandas中NaN的不同点
numpy | pandas |
---|---|
数据转nan的必要条件是类型为float | NaN转换中 int 类型、float 类型均可 |
判断是否存在nan的语法 isnan | 判断是否存在NaN:pd.isnull(矩阵数据表) /pd.notnull(矩阵数据表) |
numpy中计算行列总和时,存在nan 时,结果必定为nan ,即,nan 和 任何值计算都为 nan | 在计算中,nan 不参与计算,不需要做特殊处理 |
对缺失数据进行处理
根据上面的表格,我们也基本上了解了pandas中的NaN的特点
- 判断数据是否为NaN:
pd.isnull(矩阵数据表)
、pd.notnull(矩阵数据表)
- 处理方式
- 方式一:删除NaN所在的行、列 (dropna)
dropna(axis=0/axis=1,how=‘any’/how=‘all’,inplace=False/inplace=True)
注:
axis表示行列:0为行、1为列,表示,当NaN
出现时,删除的是他的那一行、还是那一列。
how表示条件:any
表示出现一个即删除,all
表示当某一列,或者某一行均为NaN
的时候,才删除
inplace表示是否原地修改:inplace:True
表示所做的修改作用于当前的矩阵数据表上inplace:False
表示所做的修改不作用于当前的矩阵数据表上 - 方式二:填充数据 (fillna)
矩阵数据表.fillna(t.mean())
、矩阵数据表.fillna(t.median())
、矩阵数据表.fillna(0)
注:均值mean,中位数median
- 方式一:删除NaN所在的行、列 (dropna)
- 处理为 0 的数据:
t[t==0]=np.nan
当然,我们在现实的编程中,不会每次为 0 的数据都需要处理
因为:在计算平均值等情况下,nan
是不会参数计算的,但是0
会