700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python数据清洗工具 方法 过程整理归纳(一 数据清洗之常用工具——numpy pandas)

python数据清洗工具 方法 过程整理归纳(一 数据清洗之常用工具——numpy pandas)

时间:2024-04-04 04:02:47

相关推荐

python数据清洗工具 方法 过程整理归纳(一 数据清洗之常用工具——numpy pandas)

文章目录

1 背景2 常用工具2.1 numpy2.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.801 3.012 8.993 8.584 5.18dtype: 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.80b 3.01c 8.99d 8.58e 5.18Name: 这是一个序列, dtype: float64series3 = pd.Series({'北京':2.8,'上海':3.01,'广东':8.99,'江苏':9.73,'浙江':5.18})#用字典series3北京 2.80上海 3.01广东 8.99江苏 9.73浙江 5.18dtype: float64series3[0:3]#左闭右开北京 2.80上海 3.01广东 8.99dtype: float64series3['北京':'江苏']#左右都闭北京 2.80上海 3.01广东 8.99江苏 9.73dtype: float64series1.values#输入的是值array([2.8 , 3.01, 8.99, 8.58, 5.18])series3.index​Index(['北京', '上海', '广东', '江苏', '浙江'], 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性别 objectdtype: objectdf2.dtypes姓名 object年龄int64性别 objectdtype: object

series和dataframe常用方法如下:

欢迎阅读数据清洗系列文章:python数据清洗工具、方法、过程整理归纳

一、数据清洗之常用工具——numpy,pandas二、数据清洗之文件读写——读取csv、Excel和MySQL数据三、数据清洗之数据表操作——数据筛选、增加删除、查找修改、数据整理和层次化索引四、数据清洗之数据转换——日期格式数据处理、高阶函数数据处理、字符串数据处理五、数据清洗之数据统计——数据分组运算、聚合函数使用、分组对象和apply函数、透视图与交叉表六、数据清洗之数据预处理(一)——重复值处理、缺失值处理七、数据清洗之数据预处理(二)——异常值处理、数据离散化处理八、总结

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。