数据清洗是指当我们通过爬虫获取数据以后对数据进行清洗,通过python对于数据中的空值、异常值、无效值进行修改删除。进而对清洗后的数据进行分析处理。
使用Numpy处理数据
初识Numpy数组
NumPy是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.
创建Numpy数组
创建一个Numpy的方式有很种,下面我们逐一进行了解测试.
- 使用array()函数
array()函既可以创建一维数组也可以创建二维数组。
- 使用zeros()函数
zerios()函数创建元素值都是0的数组
- 使用ones()函数
ones()函数创建元素值都为1的数组
- 使用empty()函数
- 使用arange()函数
利用NumPy数组进行数据处理
- 将条件逻辑转为数组运算
NumPy的where()函数是三元表达式x if condition else y的矢量版本。
- 数组统计运算
数据分析工具Pandas
初识Pandas
Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。
Pandas数据结构
Series
Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。
参数说明:
data:一组数据(ndarray 类型)。
index:数据索引标签,如果不指定,默认从 0 开始。
dtype:数据类型,默认会自己判断。
name:设置名称。
copy:拷贝数据,默认为 False。
- 创建方式1
- 创建方式2
- 创建方式3
DataFrame
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。
参数说明:
data:一组数据(ndarray、series, map, lists, dict 等类型)。
index:索引值,或者可以称为行标签。
columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
dtype:数据类型。
copy:拷贝数据,默认为 False。
- 创建方式1
- 创建方式2
- 根据索引获取值
- 通过属性访问
- 添加数据
- 删除数据
Pandas索引操作以及高级索引
索引对象
Pandas中的索引都是index对象,又称为索引对象,该对象不可修改。
索引对象不可修改的特性非常重要,这样使得多个数据结构之间能够很安全的共享index对象。
重置索引
reindex()方法作用是对原索引和新索引进行匹配,即,新索引有缘索引的数据,而原索引数据按照新索引排序。
index, columns:要符合的新标签/索引
method:None 、 backfill 、 bfill、pad、ffill、nearest可选
fill_value:可指定填充缺失值
limit:向前或向后填充的最大连续元素数
索引操作
- Series索引操作
Series的索引用法类似于Numpy数组的索引,但是Series的索引既可以通过索引的位置获取、也可以通过索引的名称获取。
- 获取不连续的数据
- DataFrame的索引操作
DataFrame结构既可以包含行索引、也可以包含列索引。其中,行索引是通过index属性进行获取,列索引是通过columns属性进行获取。
- DataFrame获取不连续的Series对象
- 索引高级操作
loc:基于标签索引(索引名称),用于按标签选取数据。执行切片操作时,既包含起始索引又包含结束索引。
iloc:基于位置索引(整数索引),用于按位置选取数据。执行切片操作时,只包含起始索引,不包含结束索引。
数据排序
按索引排序
axis:0按照行名排序;1按照列名排序
level:默认None,否则按照给定的level顺序排列
ascending:默认True升序排列;False降序排列
inplace:默认False,否则排序之后的数据直接替换原来的数据
kind:排序方法
按值排序
参数即用法同按索引排序。
读写数据操作
读写CSV文件
Pandas为我们提供了read_csv读取CSV文件,该函数涉及参数较多,但是只有几个常用,具体的在这里我就不一一列举,感兴趣的可以看看这个博客read_csv()。下面写个实例看看怎么使用。
读取txt文件
读取Excel文件
读取MySQL数据库
sql:SQL命令字符串
con:连接sql数据库的engine,一般可以用SQLalchemy或者pymysql之类的包建立
index_col: 选择某一列作为index
coerce_float:非常有用,将数字形式的字符串直接以float型读入
columns:要选取的列。一般没啥用,因为在sql命令里面一般就指定要选择的列了
读取mongodb数据库
数据预处理
空值和缺失值处理
在python里面一般空值使用None表示,缺失值使用NaN表示。Pandas中提供了一些用于检查或处理空值和缺失值的函数。
- isnull()函数
该函数的参数只有一个,表示检查空值的对象。
- notnull()函数
groupby()数据分组
- 通过列名分组
- 通过Series对象分组
通过字典分组
今天的博客就到这了,本期我们一起学习了数据清洗与数据分析,因为这是一个很庞大的体系,所以我这里只列举了常用的一些,当然,也可能有遗漏的地方,后续我会继续添加补充。
下一期我将带领大家学习爬虫的最后一弹,利用我们清洗完成的数据实现数据可视化。一起期待吧。
如果你发现有问题或者有遗漏,欢迎指正~~