首页 > 编程知识 正文

python数据清洗框架,python数据清洗面试题

时间:2023-05-03 19:56:03 阅读:160319 作者:2875

数据清洗是整个数据分析过程的第一步,也是整个数据分析项目中耗时最长的一步。 数据清洗的过程决定数据分析的正确性。 随着大数据的普及,数据清洗是必备技能之一,本教程将更完整地介绍使用python进行数据清洗的全过程。 也就是说,适合零度基点的怕黑的麦片也可以成为数据清洗大佬的复习指南。 文章很长,晾的东西很多,建议先收藏起来再看。 希望能帮到大家。

为了便于阅读和复习,本教程中的代码均采用图像格式,源代码和所需数据位于以下链接中

链接: https://pan.Baidu.com/s/1-3 pm SSS5xkjhszvxqiabpw

抽屉代码: 23uk

课程简介1 .数据清洗常用工具1.1 NumpyNumpy常规数据结构Numpy常规方法数组访问方法Numpy常规数据清洗函数1.2 PandasPandas常规数据结构series和方法Pandas常规数据结构dataframe和方法SSD rame常用方法2 .数据清洗的文件操作2.1读写CSV文件2.2读写excel文件2.3读写数据库文件3.1数据清洗的数据表处理3.1数据常用筛选方法3.2添加和删除数据3.3修改和检索数据3.3 索引整理4.1数据清洗的数据转换4.1日期格式数据处理4.2字符串数据处理4.3高次函数数据处理5。 数据清洗的数据统计5.1数据分组运算5.2聚合函数5.3分组对象与APP函数5.4透视与交叉表6 .数据清洗的数据预处理6.1重复值处理6.2缺失值处理6.3异常值处理6.4数据离散化处理7 .汇总与整理7.1数据清洗步骤

1 .数据清洗常用工具

数据清洗意义

在现实生活中,数据并不完美,需要清洗才能进行后续的数据分析数据清洗,这是整个数据分析项目中消耗时间最多的一步数据的质量,最终决定数据分析准确性的数据清洗是唯一提高数据质量的方法,数据分析的结果也是33330

现在,在Python中,numpy和pandas是最主流的工具,numpy中的向量运算可以提高数据处理效率。pandas提供了大量数据清洗的高效方法。 Python尽可能多地使用numpy和pandas函数。 提高数据清洗效率1.1 Numpy Numpy常用数据结构Numpy常用数据结构以ndarray格式使用array函数创建,语法格式为array (列表或元组),由arange、linspace、zeros

返回表示Numpy的常用方法ndim:ndarray的维形状的int。 返回大小、几行数列的size。 返回数组元素的个数dtype。 返回数组中元素的类型运算。 可以在各要素上直接加减乘除

数组访问方法

Numpy通用数据清洗函数排序函数

• sort函数:按照从小到大的顺序排序

• argsort函数:返回对数据中从小索引值到大索引值的数据的搜索

可以定制• np.where:以返回满足条件的情况

• np.extract:返回满足条件的元素值

1.2 Pandas Pandas的一般数据结构使用series和方法pandas.Series创建series数据结构。 Pandas.series(data,index,dtype,name )。 上述参数中的data可以是列表、array或dict。 在以上参数中,索引表示索引,其长度必须与数据相同,而name表示对象的名称

Pandas的典型数据结构dataframe和方法使用pandas.DataFrame创建dataframe数据结构。 pandas.dataframe(data,index,dtype,columns )。 上述参数中的data可以是列表、array或dict。 在以上参数中,索引表示行索引,而columns表示列名或列标签

series和dataframe的常用方法values返回对象所有元素的值。 索引返回行索引。 dtypes返回索引。 shape返回对象的维,对象的数据形状ndim返回对象的维。 ndim返回对象的数量。 columns仅针对数据帧数据结构, 返回列标签2 .数据清洗文件操作Pandas读写CSV文件及相关参数说明Pandas读写excel文件及相关参数说明Pandas与mysql交互2.1 csv文件读写Pandas有10多种数据源结果,在数据帧格式的情况下,在读取csv文件时,文件名尽可能多的英语参数,可以自己控制,但在用默认参数读取csv时,经常注意编码,utf-utf

2.2 excel文件读写通过read_excel读取,读取结果表明,采用dataframe格式读取excel文件和csv文件的参数大致相同,但工作表页面参数较多,可以自行控制

el时,注意编码,常用编码为utf-8、gbk 、gbk2312和gb18030等使用to_excel快速保存为xlsx格式

2.3 数据库文件读写 使用sqlalchemy建立连接需要知道数据库的相关参数,如数据库IP地址、用户名和密码等通过pandas中read_sql 函数读入, 读取完以后是dataframe格式通过dataframe的to_sql方法保存

数据库建立连接参数
conn =create_engine(‘mysql+pymysql://user:passward@IP:3306/test01’)
• root: 用户名
• passward: 密码
• IP : 服务器IP,本地电脑用localhost
• 3306: 端口号
• test01 : 数据库名称

df.to_sql(name, con=engine, if_exists=‘replace/append/fail’,index=False)
• name是表名
• con是连接
• if_exists:表如果存在怎么处理。三个选项 append代表追加, replace代表删除原表,建立新表,fail代表什么都不干
• index=False:不插入索引index

3. 数据清洗之数据表处理 3.1 数据常用筛选方法 在数据中,选择需要的行或者列基础索引方式,就是直接引用ioc[行索引名称或者条件,列索引名称或者标签]iloc[行索引位置,列索引位置]注意, 区分loc和iloc


3.2 数据增加和删除 在数据中,直接添加列使用df.insert方法在数据中添加一列掌握drop(labels,axis,inplace=True) 的用法labels表示删除的数据, axis表示作用轴,inplace=True表示是否对原数据生效axis=0按行操作, axis=1按列操作使用del函数直接删除其中一列

参数解释

3.3 数据修改和查找 在数据中, 可以使用rename修改列名称或者行索引名称使用loc方法修改数据使用loc方法查找符合条件的数据条件与条件之间用&或者|连接,分别代表‘且’和‘或’使用between和isin选择满足条件的行

3.4 数据整理

定义:在数据清洗过程中,很多时候需要将不用的数据整理在一起,方便后续的分析,这个过程也叫数据合并

合并方法:常见的合并方法有堆叠和按主键进行合并,堆叠又分为横向堆叠和纵向堆叠,按主键合并类似于sql里面的关联操作

横向堆叠将两张表或多张表在X轴方向,即横向拼接在一起纵向堆叠将两张表或多张表在Y轴方向,即纵向拼接在一起注意使用concat时,axis =1用于横向,0代表纵向注意join取inner或者outer时,分别代表交集和并集

关联操作
纵向合并


3.5层次化索引

定义:在一个轴上拥有两个或者两个以上的索引
• 使用loc语句进行访问
• loc里面接受tuple,如loc[(a,b),:]


4. 数据清洗之数据转换 4.1 日期格式数据处理 Pandas中使用to_datetime()方法将文本格式转换为日期格式dataframe数据类型如果为datetime64,可以使用dt方法取出年月日等对于时间差数据,可以使用timedelta函数将其转换为指定时间单位的数值时间差数据,可以使用dt方法访问其常用属性

4.2 字符串数据处理 Pandas中提供了字符串的函数,但只能对字符型变量进行使用通过str方法访问相关属性可以使用字符串的相关方法进行数据处理

4.3 高阶函数数据处理 在dataframe中使用apply方法,调用自定义函数对数据进行处理函数apply, axis=0表示对行进行操作,axis=1表示对列进行操作可以使用astype函数对数据进行转换可以使用map函数进行数据转换

5. 数据清洗之数据统计 5.1 数据分组运算

分组计算根据某个或者某几个字段对数据集进行分组,然后运用特定的函数,得到结果

使用groupby方法进行分组计算,得到分组对象GroupBy语法为df.groupby(by=)分组对象GroupBy可以运用描述性统计方法, 如count、mean 、median 、max和min等

5.2 聚合函数使用 对分组对象使用agg聚合函数Groupby.agg(func)针对不同的变量使用不同的统计方法
5.3 分组对象与apply函数 函数apply即可用于分组对象,也可以作用于dataframe数据Groupby.apply(func)需要注意axis=0和axis=1的区别

5.4 透视图与交叉表

在数据分析中,数据透视表是常见的工具之一,需要根据行或列对数据进行各个维度数据的汇总,在pandas中,提供了相关函数解决此类问题,交叉表更多用于频数的分析。

pivot_table( data, index, columns,values, aggfunc, fill_value,margins, margins_name=)

Index : 行分组键columns: 列分组键values: 分组的字段,只能为数值型变量aggfunc: 聚合函数margins: 是否需要总计

交叉表用于计算分组频率
pd.crosstab(index,columns,normalize)

Index: 行索引Columns: 列索引Normalize: 数据对数据进行标准化,index表示行,column表示列

6. 数据清洗之数据预处理 6.1 重复值处理 数据清洗一般先从重复值和缺失值开始处理重复值一般采取删除法来处理但有些重复值不能删除,例如订单明细数据或交易明细数据等
6.2 缺失值处理 缺失值首先需要根据实际情况定义可以采取直接删除法有时候需要使用替换法或者插值法常用的替换法有均值替换、前向、后向替换和常数替换
6.3 异常值处理 指那些偏离正常范围的值,不是错误值异常值出现频率较低,但又会对实际项目分析造成偏差异常值一般用过箱线图法(分位差法)或者分布图(标准差法)来判断异常值往往采取盖帽法或者数据离散化


6.4 数据离散化处理 数据离散化就是分箱一般常用分箱方法是等频分箱或者等宽分箱一般使用pd.cut或者pd.qcut函数

pandas.cut(x, hxdyets, right=True, labels=None, rethxdyets=False, precision=3, include_lowest=False)

x,类array对象,且必须为一维,待切割的原形式hxdyets, 整数、序列尺度、或间隔索引。如果hxdyets是一个整数,它定义了x宽度范围内的等宽面元数量,但是在这种情况下,x的范围在每个边上被延长1%,以保证包括x的最小值或最大值。如果hxdyet是序列,它定义了允许非均匀hxdyet宽度的hxdyet边缘。在这种情况下没有x的范围的扩展。right,布尔值。是否是左开右闭区间,right=True,左开右闭,right=False,左闭右开labels,用作结果箱的标签。必须与结果箱相同长度。如果FALSE,只返回整数指标面元。rethxdyets,布尔值。是否返回面元precision,整数。返回面元的小数点几位include_lowest,布尔值。第一个区间的左端点是否包含

pandas.qcut(x, q, labels=None, rethxdyets=False, precision=3, duplicates=’raise’)

x q,整数或分位数组成的数组。q, 整数 或分位数数组 整数比如 4 代表 按照4分位数 进行切割 labels, 用作结果箱的标签。必须与结果箱相同长度。如果FALSE,只返回整数指标面元。

7. 总结与梳理 7.1 数据清洗步骤 数据获取,使用read_csv或者read_excel数据探索,使用shape,describe或者info函数行列操作,使用loc或者iloc函数数据整合,对不同数据源进行整理数据类型转换,对不同字段数据类型进行转换分组汇总,对数据进行各个维度的计算处理重复值、缺失值和异常值以及数据离散化 7.2 函数大全 merge,concat函数常常用于数据整合pd.to_datetime常常用于日期格式转换str函数用于字符串操作函数astype用于数据类型转换函数apply和map用于更加高级的数据处理Groupby用于创建分组对象透视表函数pd.pivot_table和交叉表pd.crosstab分组对象和agg结合使用,统计需要的信息 7.3 数据清洗之总结

数据清洗实质上是将实际业务问题中,脏数据清洗干净,转换为’干净的数据’, 所谓的脏
,指数据可能存在以下几种问题(主要问题):

数据缺失 (Incomplete) 是属性值为空的情况。如 Occupancy = “ ”数据噪声 (Noisy)是数据值不合常理的情况。如 Salary = “-100”数据不一致 (Inconsistent)是数据前后存在矛盾的情况。如 Age = “042” 或者
Birthday = “01/09/1985”数据冗余 (Redundant)是数据量或者属性数目超出数据分析需要的情况离群点/异常值 (Outliers)是偏离大部分值的数据数据重复是在数据集中出现多次的数据

❤本教程到这终于结束了,希望对大家有所帮助❤

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。