python数据分析——数据预处理

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
大数据开发治理平台 DataWorks,不限时长
实时计算 Flink 版,5000CU*H 3个月
简介: 数据预处理是数据分析过程中不可或缺的一环,它的目的是为了使原始数据更加规整、清晰,以便于后续的数据分析和建模工作。在Python数据分析中,数据预处理通常包括数据清洗、数据转换和数据特征工程等步骤。

数据预处理


前言

python数据分析——数据预处理

数据预处理是数据分析过程中不可或缺的一环,它的目的是为了使原始数据更加规整、清晰,以便于后续的数据分析和建模工作。在Python数据分析中,数据预处理通常包括数据清洗、数据转换和数据特征工程等步骤。

数据清洗是数据预处理的第一步,主要是为了解决数据中的缺失值、异常值、重复值等问题。Python提供了丰富的库和工具来处理这些问题,如pandas库可以帮助我们方便地处理数据框(DataFrame)中的缺失值和重复值。对于异常值,我们可以通过统计分析、可视化等方法来识别和处理。

数据转换是为了将数据转换成更适合分析的形式。常见的数据转换包括数据标准化、归一化、离散化等。例如,对于连续型变量,我们可以通过标准化或归一化将其转换到同一量纲下,以便于后续的比较和分析。对于分类变量,我们可以使用独热编码(One-Hot Encoding)将其转换为数值型数据。

数据特征工程则是为了从原始数据中提取出更多有用的信息,以提高模型的性能。特征工程通常包括特征选择、特征构造和特征降维等步骤。在Python中,我们可以使用scikit-learn等机器学习库来进行特征选择和降维,同时也可以利用自己的业务知识来构造新的特征。

在进行数据预处理时,我们还需要注意数据的质量和完整性。如果数据存在严重的质量问题或缺失过多,那么即使进行了再精细的数据预处理也难以得到准确的分析结果。因此,在进行数据分析之前,我们需要对数据的质量和完整性进行充分的评估和清理。

综上所述,数据预处理是Python数据分析中不可或缺的一环。通过数据清洗、数据转换和数据特征工程等步骤,我们可以使原始数据更加规整、清晰,为后续的数据分析和建模工作奠定坚实的基础。同时,我们也需要注意数据的质量和完整性,以确保分析结果的准确性和可靠性。


一、熟悉数据

1.1 数据表的基本信息查看

【例】餐饮企业的决策者想要了解影响餐厅销量的一些因素,如天气的好坏、促销活动是否能够影响餐厅的销量,周末和非周末餐厅销量是否有大的差别。餐厅收集的数据存储在sales.csv中,前五行的数据如下所示。请利用Python查看数据集的基本信息。

关键技术:使用info()方法查看数据基本类型。

在该例中,首先使用pandas库中的read_csv方法导入sales.csv文件,然后使用info()方法,查看数据的基本信息,代码及输出结果如下:

import numpy as np
import pandas as pd
df = pd.read_excel("C:\\Users\\lenovo\\数据分析\\pydata02.xlsx")#读入excel表格
df

1.2查看数据表的大小

【例】请利用python查看上例中sales.csv文件中的数据表的大小,要求返回数据表中行的个数和列的个数。

关键技术:使用pandas库中DataFrame对象的shape()方法。

d = df.shape[0] #打印行数和列数
w = df.shape[1]
print("数据的行数%d "%d)
print('数据的列数 %d'%w)

1.3数据格式的查看

【例】请利用Python分别生成10行3列的DataFrame类型数据df和数组型数据arr,并且要求dfarr数值的取值范围在6~10之间,df的列名为a,b,c。最后返回dfarr的数据类型。

关键技术:type()方法。

【例】同样对于前一个例题给定的数据文件,读取后请利用Python查看数据格式一是字符串还是数字格式。

关键技术: dtype属性和dtypes属性

在上例代码的基础上,对于series数据可以用dtype查看,对于dataframe数据可以用dtypes查看,程序代码如下所示:

1.4查看具体的数据分布

在进行数据分析时,常常需要对对数据的分布进行初步分析,包括统计数据中各元素的个数,均值、方差、最小值、最大值和分位数。

关键技术: describe()函数。在做数据分析时,常常需要了解数据元素的特征,describe()函数可以用于描述数据统计量特征,其返回值count表示、mean表示数据的平均值、std表示数据的标准差、min表示数据的最小值、max表示数据的最大值、25%50%75%分别表示数据的一分位、二分位、三分位数。

count : 计数

mean :平均值

std : 标准差

min : 最小值

25% 一分位

50% 二分位

75% 三分位

max 最大值

二、缺失值处理

2.1缺失值检查

【例】若某程序员对淘宝网站爬虫后得到原始数据集items.csv,文件内容形式如下所示。请利用Python检查各列缺失数据的个数,并汇总。

关键技术: isnull()方法。isnull()函数返回值为布尔值,如果数据存在缺失值,返回True;否则,返回False

2.2缺失值删除

【例】假设对于上述items.csv数据集检查完缺失值后,要对缺失值进行删除处理。请用Python完成上述工作。

关键技术: dropna()方法。dropna()方法用于删除含有缺失值的行。

【例】当某行或某列值都为NaN时,才删除整行或整列。这种情况该如何处理?

关键技术: dropna()方法的how参数。

【例】当某行有一个数据为NaN时,就删除整行和当某列有一个数据为NaN时,就删除整列。遇到这两周种情况,该如何处理?

关键技术: dropna()方法的how参数dropna(how= 'any' )

2.3缺失值替换/填充

对于数据中缺失值的处理,除了进行删除操作外,还可以进行替换和填充操作,如均值填补法,近邻填补法,插值填补法,等等。本小节介绍填充缺失值的fillna()方法。

本小节后续案例中所用的df数据如下,在案例中将不再重复展示。

【例】使用近邻填补法,即利用缺失值最近邻居的值来填补数据,对df数据中的缺失值进行填补,这种情况该如何实现?

关键技术: fillna()方法中的method参数。

在本案例中,可以将fillna()方法的method参数设置为bfill,来使用缺失值后面的数据进行填充。代码及运行结果如下:

【例】若使用缺失值前面的值进行填充来填补数据,这种情况又该如何实现?

本案例可以将fillna()方法的method参数设置设置为ffill,来使用缺失值前面的值进行填充。代码及运行结果如下:

这里的前后指的是上下

【例】请利用二次多项式插值法对df数据中item2列的缺失值进行填充。

关键技术: interpolate方法及其order参数。

在该案例中,将interpolate方法中的参数order设置为2即可满足要求。具体代码及运行结果如下:

【例】请使用Python完成对df数据中item2列的三次样条插值填充。

关键技术:三次样条插值,即利用一个三次多项式来逼近原目标函数,然后求解该三次多项式的极小点来作为原目标函数的近似极小点。

在该案例中,将interpolate方法的method参数设置为spline,将order参数设置为3,具体代码及运行结果如下:

三、重复值处理

3.1发现重复值

在数据的采集过程中,有时会存在对同一数据进行重复采集的情况,重复值的存在会对数据分析的结果产生不良影响,因此在进行数据分析前,对数据中的重复值进行处理是十分必要的。本节主要从重复值的发现和处理两方面进行介绍。

本节各案例所用到的df数据如下,在各案例的代码展示中将不再重复这部分内容。

【例】请使用Python检查df数据中的重复值。

关键技术: duplicated方法。

利用duplicated()方法检测冗余的行或列,默认是判断全部列中的值是否全部重复,并返回布尔类型的结果。对于完全没有重复的行,返回值为False。对于有重复值的行,第一次出现重复的那一行返回False,其余的返回True。本案例的代码及运行结果如下:

四、异常值的检测和处理

4.1检测异常值

【例】某公司的年度业务数据work.csv,数据形式如下所示。其中年度销售量应大于1000,请分别用判断数据范围方法和箱形图方法检测数据中的异常值。

关键技术: query方法和boxplot方法。

在该案例中,首先使用pandas库中的query方法查询数据中是否有异常值。然后通过boxplot方法检测异常值。代码及运行结果如下:

下面以箱形图的方法来进行异常值检测。

4.2处理异常值

了解异常值的检测后,接下来介绍如何处理异常值。在数据分析的过程中,对异常值的处理通常包括以下3种方法:

  1. 最常用的方式是删除。
  2. 将异常值当缺失值处理,以某个值填充。
  3. 将异常值当特殊情况进行分析,研究异常值出现的原因。

【例】对于上述业务数据work.csv,若已经检测出异常值,请问在此基础上,如何删除异常值?

关键技术:drop()方法。

利用drop()方法,对work.csv文件中的异常值进行删除操作,代码及运行结果如下:

五、数据类型的转化

1、数据类型检查

【例】利用numppy库的arange函数创建一维整数数组,并查

关键技术: dtype属性。

在本案例中,首先使用arange方法创建数组arr,然后通过打属性查看数组的数据类型。代码及运行结果如下:

【例】利用numpy库的arange函数创建一维浮点数数组arr1,然后将arr1数组的数据类型转换为整型。

关键技术: astype函数。

六、索引设置

索引能够快速查询数据,本节主要介绍索引的应用。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容, Pandas库中索引的作用如下:

  1. 更方便地查询数据。
  2. 使用索引可以提升查询性能。

6.1添加索引

【例】创建数据为[1,2,3,4,5]Series,并指定索引标签为['a','b','c','d','e']

关键技术: index方法设置索引。

该案例的代码及运行结果如下:

6.2更改索引

【例】某公司销售数据集"work.csv"内容如下,请设定日期为索引,并用Python实现。关键技术: set_index()函数,可以指定某一字段为索引。

关于set_index

参数

  1. keys : 要设置为索引的列名(如有多个应放在一个列表里)
  2. drop : 将设置为索引的列删除,默认为True
  3. append : 是否将新的索引追加到原索引后(即是否保留原索引),默认为False
  4. inplace : 是否在原DataFrame上修改,默认为False
  5. verify_integrity : 是否检查索引有无重复,默认为False

在该案例中,除了可以用set_index方法重置索引外,还可以在导入csv文件的过程中,设置index_col参数重置索引,代码及结果如下:

6.3重命名索引

【例】构建series对象,其数据为[88,60,75],对应的索引为[1,2,3]。请利用Python对该series对象重新设置索引为[1,2,3,4,5]

关键技术: reindex()方法。

从运行结果中可以看出,对s1索引重置后,数据中出现了缺失值。若要对这些缺失值进行填补,可以设置reindex()方法中的method参数, method参数表示重新设置索引时,选择对缺失数据插值的方法。可以设置为None,bfill (向后填充)ffill(向前填充)等。

【例】通过二维数组创建如下所示的成绩表,并重置其行索引为stu1,stu2,stu3,stu4,stu5,重置其列索引为['语文', '物理','数学','英语']

关键技术: reindex()方法中的index参数和columns参数。

reindex()方法中, index参数表示重置的行索引, columns参数表示重置的列索引。本案例的代码及运行结果如下。

七、其他

7.1大小写转换

在数据分析中,有时候需要将字符串中的字符进行大小写转换。在Python中可以使用lower()方法,将字符串中的所有大写字母转换为小写字母。也可以使用upper()方法,将字符串中的所有小写字母转换为大写字母。

7.2数据修改与替换

  1. 按列增加数据
    【例】请创建如下所示的DataFrame数据,并利用Python对该数据的最后增加一列数据,要求数据的列索引为'four' ,数值为[9,10,24]。若要在该数据的'two' 列和 ‘three'列之间增加新的列,该如何操作?

  1. 按行增加数据
    【例】对于上例中的DataFrame数据,增加一行数据,数据行的索引为"d" ,数值为[9,10,11],请使用Python实现。若要向df数据中再增加三行数据,索引分别为"e" , “f” , “g”,数值分别为[1,2,3], [4,5,6], [7,8,9],在Python中该如何实现?

关键技术: loc()方法和append()方法。请利用Python将第三行数据替换为[10,20,30]

关键技术: loc()方法和iloc()方法。

7.3数据删除

  1. 按列删除数据
    【例】请构建如下DataFrame数据并利用Python删除下面DataFrame实例的第四列数据。
    关键技术:该案例中,使用DataFrame的drop()方法,删除数据中某一列。
    drop()方法的参数说明如下:
    labels:表示行标签或列标签。
    axis: axis=0,表示按行删除,axis=1,表示按列删除。默认值为0。
    index:删除行,默认为None。
    columns:删除列,默认为None。
    inplace:可选参数,对原数组作出修改并返回一个新数组。默认是False,如果为true,那么原数组直接被替换。
  2. 按行删除数据
    【例】对于上例中的DataFrame数据,请利用Python删除下面DataFrame实例的第四行数据。
    关键技术:本案例可通过设置drop()方法的index参数, label参数实现,代码及运行结果如下。

总结

数据预处理可以提高数据的质量,并提高模型的准确性和可解释性。

相关文章
|
7天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
23 2
|
3天前
|
数据采集 算法 数据挖掘
10余位大佬+10余年经验的结晶:Python数据分析与挖掘实战
LinkedIn 对全球超过3.3亿用户的工作经历和技能进行分析后得出,目前最炙手可热的25 项技能中,数据挖掘排名第一。那么数据挖掘是什么? 数据挖掘是从大量数据(包括文本)中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程。数据挖掘有助于企业发现业务的趋势,揭示已知的事实,预测未知的结果,因此“数据挖掘”已成为企业保持竞争力的必要方法。 今天给小伙伴们分享的Python数据分析与数据挖掘手册是10余位数据挖掘领域资深专家和科研人员,10余年大数据挖掘咨询与实施经验结晶。从数据挖掘的应用出发,以电力、
10余位大佬+10余年经验的结晶:Python数据分析与挖掘实战
|
2天前
|
数据采集 算法 数据挖掘
10余位大佬+10余年经验的结晶:Python数据分析与挖掘实战
LinkedIn 对全球超过3.3亿用户的工作经历和技能进行分析后得出,目前最炙手可热的25 项技能中,数据挖掘排名第一。那么数据挖掘是什么? 数据挖掘是从大量数据(包括文本)中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程。数据挖掘有助于企业发现业务的趋势,揭示已知的事实,预测未知的结果,因此“数据挖掘”已成为企业保持竞争力的必要方法。 今天给小伙伴们分享的Python数据分析与数据挖掘手册是10余位数据挖掘领域资深专家和科研人员,10余年大数据挖掘咨询与实施经验结晶。从数据挖掘的应用出发,以电力、
|
4天前
|
数据采集 数据可视化 算法
GitHub星标68K!Python数据分析入门手册带你从数据获取到可视化
Python作为一门优秀的编程语言,近年来受到很多编程爱好者的青睐。一是因为Python本身具有简捷优美、易学易用的特点;二是由于互联网的飞速发展,我们正迎来大数据的时代,而Python 无论是在数据的采集与处理方面,还是在数据分析与可视化方面都有独特的优势。我们可以利用 Python 便捷地开展与数据相关的项目,以很低的学习成本快速完成项目的研究。
|
6天前
|
数据采集 数据挖掘 数据处理
Python数据分析:Numpy、Pandas高级
在上一篇博文中,我们介绍了Python数据分析中NumPy和Pandas的基础知识。本文将深入探讨NumPy和Pandas的高级功能,并通过一个综合详细的例子展示这些高级功能的应用。
|
5天前
|
数据采集 数据可视化 算法
GitHub星标68K!Python数据分析入门手册带你从数据获取到可视化
Python作为一门优秀的编程语言,近年来受到很多编程爱好者的青睐。一是因为Python本身具有简捷优美、易学易用的特点;二是由于互联网的飞速发展,我们正迎来大数据的时代,而Python 无论是在数据的采集与处理方面,还是在数据分析与可视化方面都有独特的优势。我们可以利用 Python 便捷地开展与数据相关的项目,以很低的学习成本快速完成项目的研究。 今天给小伙伴们分享的这份Python数据分析入门手册本着实用性的目的,着眼于整个数据分析的流程,介绍了从数据采集到可视化的大致流程。
|
6天前
|
数据可视化 数据挖掘 API
Python数据分析:数据可视化(Matplotlib、Seaborn)
数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个综合详细的例子。
|
7天前
|
数据采集 数据挖掘 数据处理
Python数据分析:Numpy、Pandas基础
本文详细介绍了 Python 中两个重要的数据分析库 NumPy 和 Pandas 的基础知识,并通过一个综合的示例展示了如何使用这些库进行数据处理和分析。希望通过本篇博文,能更好地理解和掌握 NumPy 和 Pandas 的基本用法,为后续的数据分析工作打下坚实的基础。
|
5天前
|
存储 数据可视化 数据挖掘
Python 3 中使用 pandas 和 Jupyter Notebook 进行数据分析和可视化
Python 3 中使用 pandas 和 Jupyter Notebook 进行数据分析和可视化
13 0
|
8天前
|
机器学习/深度学习 数据采集 数据可视化
【python】python心理健康医学数据分析与逻辑回归预测(源码+数据集+论文)【独一无二】
【python】python心理健康医学数据分析与逻辑回归预测(源码+数据集+论文)【独一无二】