pandas入门06---数据清洗02

隐身守侯 提交于 2019-11-29 19:12:20

今天,我们接着上次的数据转换操作讲解

01 数据转换

01-01 替代值

通常我们使用replace来替换缺失值。 #!/usr/bin/python # -- coding: UTF-8 --

import pandas as pd
import numpy as np

data = pd.Series([1., -999., 2., -999., -1000, 3.])
print(data)
print(data.replace(-999,np.nan))

结果如下:

如果你想要一次替代多个值,可以传入一个列表或替代值。

print(data.replace([-999, -1000],np.nan))

也可以对应替换:

print(data.replace([-999, -1000],[np.nan,0]))
# 参数也可以通过字典传递
print(data.replace({-999:np.nan,-1000:0}))

01-02 离散化和分箱

连续值经常需要离散化,或分离成“箱子”进行分析。

举例:对如下年龄进行分箱。

ages = [19, 20, 22, 25, 27, 21, 23, 27, 37, 31, 61, 45, 41, 32]
bins = [18, 25, 35, 60, 100]
cats = pd.cut(ages, bins)
print(cats)

可以通过labels选项传递一个列表来自定义箱名。

precision=2的选项将十进制精度限制在两位。

使用qcut可以获得等长的箱。

01-03 检测和过滤异常值

np.sign(data)根据数据中的值的正负生成1和-1的数值。

下列表达式限制了-33的值:

data[np.abs(data) > 3 ] = np.sign(data) * 3

01-04 置换和随机抽样

使用numpy.random.permutation对DataFrame中的Series或行进行置换(随机重排序)。

sample方法可以帮助你选出一个不含有替代值的随机子集。

要生成一个带有替代值的样本,将replace=True传入sample方法。

01-05 计算指标/虚拟变量

如果DataFrame中的一列有k个不同的值,则可以衍生一个k列的值为1和0的矩阵或DataFrame。get_dummies函数用于实现该功能。

02 字符串操作

split可以用来分割字符串。

strip用来清除空格换行等。

字符串"::"的join方法可传入一个列表或者元组

in用来检测子字符串。

find和index也可以检测子字符串。

区别在于:

index在字符串没找到时会抛出异常,而find会返回-1。

count返回的是某个特定字符串在字符串中出现的次数。

replace常用于一种模式替代另一种模式。

ljust,rjust用于左对齐,右对齐。

data.str.contains('google')可以用来检测字符串是否含有google。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!