python数据清洗工具、方法、过程整理归纳(一、数据清洗之常用工具——numpy,pandas)
文章目录
- 1 背景
- 2 常用工具
- 2.1 numpy
- 2.2 pandas
1 背景
- 数据清洗是整个数据分析过程的第一步,也是整个数据分析项目中最耗费时间的一步;
- 数据分析的过程决定了数据分析的准确性。
2 常用工具
2.1 numpy
numpy常用数据结构:numpy中重用的数据结构是ndarray格式使用array函数创建,语法格式为array(列表或元组)可以使用其他函数例如arange/linspace/zeros等创建import numpy as np
#使用array函数创建
arr1 = np.array([-7, 4, 4, 6, 89])type(arr1)numpy.ndarrayarr3 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])#嵌套列表arr3array([[ 1, 2, 3, 4],[ 5, 6, 7, 8],[ 9, 10, 11, 12]])np.arange(1,10,0.5)#使用arange函数array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5, 7. , 7.5, 8. , 8.5, 9. , 9.5])np.linspace(1,10,20,endpoint = True)#使用等差数列:起始值,终止值,元素个数array([ 1. , 1.47368421, 1.94736842, 2.42105263, 2.89473684,3.36842105, 3.84210526, 4.31578947, 4.78947368, 5.26315789,5.73684211, 6.21052632, 6.68421053, 7.15789474, 7.63157895,8.10526316, 8.57894737, 9.05263158, 9.52631579, 10. ])(10-1)/190.47368421052631576np.zeros([4,5])#使用zeros函数array([[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.]])np.zeros(4)array([0., 0., 0., 0.])np.ones([2,3])#使用ones函数array([[1., 1., 1.],[1., 1., 1.]])arr3 + 1#每个元素都加1array([[ 2, 3, 4, 5],[ 6, 7, 8, 9],[10, 11, 12, 13]])arr3.ndim#数组维度2arr1.shape#数组形状(5,)#一维数组:5个元素arr3.shape(3, 4)#二维数组:3行4列arr3.size#一共有多少元素12arr3.dtype#元素类型dtype('int32')
#使用元组
data2 = ((1.2,2.3,3,4,5.6),(4.5,6.7,34,3.6,5),(2.5,4.6,7.8,8.9,50))#嵌套元组data2((1.2, 2.3, 3, 4, 5.6), (4.5, 6.7, 34, 3.6, 5), (2.5, 4.6, 7.8, 8.9, 50))arr2 = np.array(data2)arr2array([[ 1.2, 2.3, 3. , 4. , 5.6],[ 4.5, 6.7, 34. , 3.6, 5. ],[ 2.5, 4.6, 7.8, 8.9, 50. ]])arr2[0]#访问第一个array([1.2, 2.3, 3. , 4. , 5.6])arr2[0:3]array([[ 1.2, 2.3, 3. , 4. , 5.6],[ 4.5, 6.7, 34. , 3.6, 5. ],[ 2.5, 4.6, 7.8, 8.9, 50. ]])arr2[1:3]array([[ 4.5, 6.7, 34. , 3.6, 5. ],[ 2.5, 4.6, 7.8, 8.9, 50. ]])arr2[1,3]#第二行,第四列3.6arr2[1][3]#第二行,第四列3.6arr2[:,3]#第四列array([4. , 3.6, 8.9])arr2[:,1:3]#第二列到第三列array([[ 2.3, 3. ],[ 6.7, 34. ],[ 4.6, 7.8]])
#排序
s = np.array([1,2,4,3,6,5,90,67,54,32,12,9,7])np.sort(s)#返回的是一个视图array([ 1, 2, 3, 4, 5, 6, 7, 9, 12, 32, 54, 67, 90])sarray([ 1, 2, 4, 3, 6, 5, 90, 67, 54, 32, 12, 9, 7])s = np.sort(s)sarray([ 1, 2, 3, 4, 5, 6, 7, 9, 12, 32, 54, 67, 90])sorted(s,reverse=True)[90, 67, 54, 32, 12, 9, 7, 6, 5, 4, 3, 2, 1]np.array(sorted(s,reverse=True))array([90, 67, 54, 32, 12, 9, 7, 6, 5, 4, 3, 2, 1])np.argsort(s)array([ 0, 1, 3, 2, 5, 4, 12, 11, 10, 9, 8, 7, 6], dtype=int64)sarray([ 1, 2, 4, 3, 6, 5, 90, 67, 54, 32, 12, 9, 7])#二维数组排序arr1 = np.array([[0,1,3,],[4,2,9],[4,5,9],[1,-3,4]])np.sort(arr1,axis = 0)#axis=0是沿着行的方向排序;axis=1是沿着列的方向排序array([[ 0, -3, 3],[ 1, 1, 4],[ 4, 2, 9],[ 4, 5, 9]])np.sort(arr1,axis = 1)#axis=0是沿着行的方向排序;axis=1是沿着列的方向排序array([[ 0, 1, 3],[ 2, 4, 9],[ 4, 5, 9],[-3, 1, 4]])sarray([ 1, 2, 4, 3, 6, 5, 90, 67, 54, 32, 12, 9, 7])np.where(s>7,1,-1)#大于7返回1,否则返回-1array([-1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1])np.where(s>7,s,-1)array([-1, -1, -1, -1, -1, -1, 90, 67, 54, 32, 12, 9, -1])np.where(s>7,1,-4)array([-4, -4, -4, -4, -4, -4, 1, 1, 1, 1, 1, 1, -4])np.extract(s>7,s)#筛选出s>7的元素array([90, 67, 54, 32, 12, 9])
2.2 pandas
#序列的创建(series)import pandas as pdseries1 = pd.Series([2.8,3.01,8.99,8.58,5.18])series10 2.80
1 3.01
2 8.99
3 8.58
4 5.18
dtype: float64type(series1)#序列pandas.core.series.Seriesseries2 = pd.Series([2.8,3.01,8.99,8.58,5.18],index=['a','b','c','d','e'],name='这是一个序列')series2a 2.80
b 3.01
c 8.99
d 8.58
e 5.18
Name: 这是一个序列, dtype: float64series3 = pd.Series({'北京':2.8,'上海':3.01,'广东':8.99,'江苏':9.73,'浙江':5.18})#用字典series3北京 2.80
上海 3.01
广东 8.99
江苏 9.73
浙江 5.18
dtype: float64series3[0:3]#左闭右开北京 2.80
上海 3.01
广东 8.99
dtype: float64series3['北京':'江苏']#左右都闭北京 2.80
上海 3.01
广东 8.99
江苏 9.73
dtype: float64series1.values#输入的是值array([2.8 , 3.01, 8.99, 8.58, 5.18])series3.indexIndex(['北京', '上海', '广东', '江苏', '浙江'], dtype='object')series1.indexRangeIndex(start=0, stop=5, step=1)series1.dtypedtype('float64')dataframelist1 = [['张三',23,'男'],['李四',27,'女'],['王二',26,'女']]#使用嵌套列表df1 = pd.DataFrame(list1,columns=['姓名','年龄','性别'])df1.head(5)姓名 年龄 性别
0 张三 23 男
1 李四 27 女
2 王二 26 女df2 = pd.DataFrame({'姓名':['张三','李四','王二'],'年龄':[23,24,26],'性别':['男','女','女'],})#使用字典df2.head(5)姓名 年龄 性别
0 张三 23 男
1 李四 24 女
2 王二 26 女array1 = np.array([['张三',23,'男'],['李四',27,'女'],['王二',26,'女']])df3 = pd.DataFrame(array1,columns=['姓名','年龄','性别'],index=['a','b','c'])#使用数组df3姓名 年龄 性别
a 张三 23 男
b 李四 27 女
c 王二 26 女df3.valuesarray([['张三', '23', '男'],['李四', '27', '女'],['王二', '26', '女']], dtype=object)df3.indexIndex(['a', 'b', 'c'], dtype='object')df3.columnsIndex(['姓名', '年龄', '性别'], dtype='object')df3.columns.tolist()#转化成列表['姓名', '年龄', '性别']df3.ndim2series1.ndim1df2.shape(3, 3)series1.shape(5,)df3.size9df3.dtypes姓名 object
年龄 object
性别 object
dtype: objectdf2.dtypes姓名 object
年龄 int64
性别 object
dtype: object
series和dataframe常用方法如下:
方法名称 | 说明 |
---|---|
values | 返回对象所有元素的值 |
index | 返回行索引 |
dtypes | 返回类型 |
shape | 返回对象数据形状 |
ndim | 返回对象的维度 |
size | 返回对象的个数 |
columns | 返回列标签(只针对dataframe数据结构) |
欢迎阅读数据清洗系列文章:python数据清洗工具、方法、过程整理归纳
- 一、数据清洗之常用工具——numpy,pandas
- 二、数据清洗之文件读写——读取csv、Excel和MySQL数据
- 三、数据清洗之数据表操作——数据筛选、增加删除、查找修改、数据整理和层次化索引
- 四、数据清洗之数据转换——日期格式数据处理、高阶函数数据处理、字符串数据处理
- 五、数据清洗之数据统计——数据分组运算、聚合函数使用、分组对象和apply函数、透视图与交叉表
- 六、数据清洗之数据预处理(一)——重复值处理、缺失值处理
- 七、数据清洗之数据预处理(二)——异常值处理、数据离散化处理
- 八、总结
python数据清洗工具、方法、过程整理归纳(一、数据清洗之常用工具——numpy,pandas)相关推荐
- 《Python数据可视化编程实战》—— 1.2 安装matplotlib、Numpy和Scipy库
本节书摘来异步社区<Python数据可视化编程实战>一书中的第1章,第1.2节,作者:[爱尔兰]Igor Milovanović,更多章节内容可以访问云栖社区"异步社区" ...
- 《Python数据可视化编程实战》—— 1.6 安装图像处理工具:Python图像库(PIL)...
本节书摘来异步社区<Python数据可视化编程实战>一书中的第1章,第1.6节,作者:[爱尔兰]Igor Milovanović,更多章节内容可以访问云栖社区"异步社区" ...
- 整理了Kafka的一些常用工具,建议收藏备用!| 博文精选
作者 | 犀牛饲养员 责编 | 徐威龙 封面付费下载于视觉中国 本文主要列举一些 Kafka 的常用工具,以及举了一些例子来帮助理解.有需要的小伙伴,可以 Mark 起来再看. 环境 以下的操作都是基 ...
- python optimize_Python的五大常用库——numpy,pandas,matplotlib等
Numpy Numpy 是python科学计算的基础包,本书大部分内容都基于numpy以及构建于其上的库.其功能有: 快速高效的多维数组对象ndarray 用于对数组执行元素级计算以及直接对数组执行数 ...
- pandas是基于什么的python库_Python的五大常用库——numpy,pandas,matplotlib等
Numpy Numpy 是python科学计算的基础包,本书大部分内容都基于numpy以及构建于其上的库.其功能有:快速高效的多维数组对象ndarray 用于对数组执行元素级计算以及直接对数组执行数字 ...
- 直方图尖峰python_直方图、密度图、散点图,python数据可视化方法,你要的都在这里...
直方图和密度图 直方图 直方图(histogram)是一种可以对值频率进行离散化显示的柱状图.数据点被拆分到离散的.间隔均匀的面元中,绘制的是各面元中数据点的数量. In [165]: data1=p ...
- Python 数据合并方法 —— Pandas concat() 详解
详解concat 参数说明 concat说明 ignore_index 示例 Example Reference 参数说明 pandas.concat(objs, axis=0, join='oute ...
- 4种快速易用的Python数据可视化方法
热力图.二维密度图.蜘蛛网图和树状图,这些可视化方法你都用过吗? 数据可视化是数据科学或机器学习项目中十分重要的一环.通常,你需要在项目初期进行探索性的数据分析(EDA),从而对数据有一定的了解,而且 ...
- 四种快速易用的Python数据可视化方法
数据可视化是数据科学或机器学习项目中十分重要的一环.通常,你需要在项目初期进行探索性的数据分析(EDA),从而对数据有一定的了解,而且创建可视化确实可以使分析的任务更清晰.更容易理解,特别是对于大规模 ...
最新文章
- “三高”程序员谈:“三高”集群架构 哈哈哈!!!
- 【HDOJ】1754 I Hate It
- 鸿蒙系统2.0什么时候上线,华为官方:鸿蒙系统2.0上线,手机能否搭载鸿蒙操作系统?...
- js get请求_URL解析、HTTP请求以及浏览器和爬虫得到响应的区别
- php 回到顶部,jquery如何实现点击网页回到顶部效果?(图文+视频)
- asp.net 导出word excel 当前上下文中不存在名称“Encoding”报错问题
- 2021中国出口跨境电商发展研究报告
- SAP License:SAP MM中的几个概念
- packmol建模流程-计算
- 【CCCC】L2-013 红色警报 (25分),,并查集计算集合个数
- concurrenthashmap为什么是线程安全_为什么 StringBuilder 不是线程安全的?
- 学习Java的9张思维导图
- 自动化刷EOS资金盘(类Fomo3D)游戏
- 中央处理器cpu主要由什么组成?
- Gromacs 伞形采样
- 魔百盒CDN00001_移动魔百盒设置最佳DNS方法
- 机械学习:二维空间下支持向量机SVM基础学习
- 四月电商战 京东突围与苏宁国美当当再围剿
- 对话印奇:我们所坚持的不会改变,旷视跳出企业科研“周期律”
- 安卓linux病毒,如何清除linux病毒
热门文章
- Can not find table primary key in Class
- onblur和onclick冲突的解决方法
- python astype str_Python astype(np.float)函数使用方法解析
- 计算机日常应用有哪些,电脑有哪些常用使用技巧
- 使用Maven和WTP开发WEB项目。
- 【VUE】3、VUE-UI创建第一个VUE项目
- java解析五元组_抓包分析提取五元组
- 学习的答案:为终身学习者赋能
- word2vec、doc2vec的使用
- a5外包平台是怎么培养骗子的,a5骗子平台是怎么养成的