大数据技术技能分析大赛——第三章 数据预处理

第三章 数据预处理

3.1熟悉数据

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

1、数据表的基本信息查看

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

import pandas as pd
df1=pd.read-csv("地址",sep=",",encoding="gbk")
df1.info()

2、查看数据表的大小

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

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

import pandas as pd
df1=pd,read_csv("地址",sep=",",encoding="gbk")
d=df1.shape[0]
w=df1.shape[1]
print('数据表的行数为%d'%d)
print('数据表的列数为%d'%w)

3、数据格式的查看

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

关键技术:type()方法

import pandas as pd
import numpy as np

df=pd.DataFrame(np.random.randint(6,10,size=(10,3)),columns=['a','b','c'])
arr=np.random.randint(6,10,size=(10,3))

print('df的数据类型为:')
print(type(df))
print('arr的数据类型为')
print(type(arr))
df的数据类型为:
<class 'pandas.core.frame.dataframe'>
arr&#x7684;&#x6570;&#x636E;&#x7C7B;&#x578B;&#x4E3A;
<class 'numpy.ndarray'>
</class></class>

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

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

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

print(df.dtypes)
a    int32
b    int32
c    int32
dtype: object
print(arr.dtype)
int32

4、查看具体的数据分布

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

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

3.2缺失值处理

1、缺失值检查

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

大数据技术技能分析大赛——第三章 数据预处理

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

import pandas as pd

df=pd.read_csv("地址",sep=",",encoding="gbk")
print(df.isnull())

大数据技术技能分析大赛——第三章 数据预处理

print(df.isnull().sum())

大数据技术技能分析大赛——第三章 数据预处理

2、缺失值删除

【例】对于缺失值进行删除处理

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

df.dropna()

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

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

import pandas as pd

df=pd.DataFrame({'item1':[None,2,3,4,None],'item2':[1,2,3,4,None],'item3':[1,None,3,4,None],'item4':[1,2,None,None,None],'item5':[1,2,3,None,None],'item6':[None,None,None,None,None]})
print(df)
print("当整行都为NaN时,删除整行")
df.dropna(how='all',axis=0)
   item1  item2  item3  item4  item5 item6
0    NaN    1.0    1.0    1.0    1.0  None
1    2.0    2.0    NaN    2.0    2.0  None
2    3.0    3.0    3.0    NaN    3.0  None
3    4.0    4.0    4.0    NaN    NaN  None
4    NaN    NaN    NaN    NaN    NaN  None
&#x5F53;&#x6574;&#x884C;&#x90FD;&#x4E3A;NaN&#x65F6;&#xFF0C;&#x5220;&#x9664;&#x6574;&#x884C;

Out[4]:

item1item2item3item4item5item60NaN1.01.01.01.0None12.02.0NaN2.02.0None23.03.03.0NaN3.0None34.04.04.0NaNNaNNone

print("当整列都为NaN时,删除整列")
df.dropna(how='all',axis=1)
&#x5F53;&#x6574;&#x5217;&#x90FD;&#x4E3A;NaN&#x65F6;&#xFF0C;&#x5220;&#x9664;&#x6574;&#x5217;

Out[5]:

item1item2item3item4item50NaN1.01.01.01.012.02.0NaN2.02.023.03.03.0NaN3.034.04.04.0NaNNaN4NaNNaNNaNNaNNaN

【例】当某行有一个数据为NaN时,就删除整行和当某列有一个数据为NaN时就删除整列

df2=dropna(how='any',axis=0)

3、缺失值替换、填充

均值填补法、近邻填补法、插值填补法等等

本小节介绍fillna方法

大数据技术技能分析大赛——第三章 数据预处理

大数据技术技能分析大赛——第三章 数据预处理

【例】使用近邻填补法,即利用缺失值最近邻的值来填补数据,对df数据中的缺失值进行填补

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

在本案例中可以将fillna()方法中的method参数设置为bfill,来使用缺失值后面的数据进行填充

大数据技术技能分析大赛——第三章 数据预处理

【例】若使用缺失值前面的值进行填充来填补数据,如何实现

本案例可以用fillna()方法中的method参数设置设置为ffill,来使用缺失值前面的值进行填充

大数据技术技能分析大赛——第三章 数据预处理

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

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

设置为2即可满足要求

大数据技术技能分析大赛——第三章 数据预处理

【例】请对df数据中的item2列的三次样条插值填充

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

将interpolate方法的method参数设置为spline,将order参数设置为3

df['item2'].interpolate(method="spline",o)

3.3重复值处理

1、发现重复值

在数据的采集过程中,有时会存在对同一数据进行重复采集的情况,重复值的存在会对数据分析的结果产生不良影响,因此在进行数据分析之前 ,对数据的重复值进行处理是十分必要的

大数据技术技能分析大赛——第三章 数据预处理

原始数据

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

关键技术:duplicated方法

利用该方法检测冗余的行或列,默认是判断全部列中的值是否全部重复,并返回布尔类型的结果,对于完全没有重复的行,返回值为False。对于有重复值的行,第一次出现重复的那一行返回False,其余返回True 。

df.duplicated()

大数据技术技能分析大赛——第三章 数据预处理

【例】在上例对df数据检查出重复值得基础之上,如何利用Python对重复值进行删除

关键技术:drop_dupicates()方法

利用该方法去除冗余数据,即删除冗余得所有行,默认是判断全部列

df.drop_duplicates()

大数据技术技能分析大赛——第三章 数据预处理

3.4异常值的检测与处理

1、检测异常值

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

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

大数据技术技能分析大赛——第三章 数据预处理

首先使用pandas库中得query方法查询数据中是否有异常值,然后通过boxplot方法检测异常值

import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv("地址",sep=",",encoding="gbk")
df.query("销售)

大数据技术技能分析大赛——第三章 数据预处理

大数据技术技能分析大赛——第三章 数据预处理

2、处理异常值

(1)最常用得方式是删除

(2)将异常值当缺失值处理,以某个值填充

(3)将异常值当特殊情况进行分析,研究异常值出现的原因

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

关键技术:drop()方法

import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv("地址",sep=",",encoding"gbk")
df.query("销售)
df1=df.drop(indx=3,axis=0)
df1

df1=df.drop(index=3,axis=0)
df1

plt.boxplot(df1['销售'])

3.5数据类型转换

1、数据类型检查

【例】利用numpy库的arrange方法创建一维整数数组,并查看数据类型

关键技术:dfype属性

首先使用arrange方法创建数组arr,然后通过打印arr数组的dtype属性查看数据类型

import numpy as np

arrl=np.arrange(1,10,2)
arr1

print(arr1.dtype)

arr2=np.arrange(0,1,0.2)
arr2

print(arr2.dtype)

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

关键技术:astype函数

arr=np.arange(1,5,0.5)
arr
print(arr.dtype)
arr1=arr.astype(np.int)
arr1
print(arr1.dtype)

3.6索引设置

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

(1)更方便的查询数据

(2)使用索引可以提升查询性能

1、添加索引

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

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

import pandas as pd

s=pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
print(s)
a    1
b    2
c    3
d    4
e    5
dtype: int64

2、更改索引

【例】设定日期为索引

关键技术:set_index()函数,可以指定某一字段为索引


df=pd.read_csv("地址",sep=",",encoding="gbk")

print(df)

df1=df.set_index('日期')

print(df1)

还可以在导入csv文件的过程中设置index_col参数重置索引,

df2=pd.read_csv("地址",sep=",",encoding="gbk",index_col='日期')
df2

3、重命名索引

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

关键技术:reindex方法

s2=s1.reindex([1,2,3,4,5])
print(s2)

重置行索引和列索引

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

import pandas as pd
data=[[][][]]
index=['''''']
columns=['''''']
df=pd.DataFrame(data=data,index=index,columns=columns)
print(df)

df.reindex(index=['''''''],columns=['''''])

3.7其他

1、大小写转换

lower()方法:将字符串中所有的大写字母转换成小写字母

upper()方法:将字符串中的所有小写字母转换成大写字母

2、数据的修改与替换

【例】最后增加一列数据,要求数据的列索引为’four’,数值为[9,10,24]。在该数据的两列之间增加新的列,该如何操作

关键技术:insert方法


df1=df
df1['four']=[9,10,24]
df1

df2=df
df2.loc[:,'four']=[9,10,24]
df2

df.insert(2,'four',[9,10,24])
df

df.loc['d']=[9,10,11]
df

data_insert=
index_insert=
columns_insert=
sd_insert=pd.DataFrame(data=data_insert,index=index_insert,columns=columns_insert)
df2=df.append(df_insert)
df2

将第三行数据替换成[10,20,30]

关键技术:loc方法和iloc方法

3、数据删除

【例】构建DF数据,并删除下面DF实例的第四列数据

关键技术:drop()方法,删除数据中的额某一列

drop()方法的参数说明如下

labels:表示行标签或列标签

axis:axis=0,表示按行删除,axis=1表示按列删除

index:删除行,默认为None

columns:删除列,默认为None

inplace:可选参数,对原数组做出修改并返回一个新数组,默认是False,如果为True,那么原数组直接被替换

Original: https://blog.csdn.net/weixin_65801945/article/details/127886692
Author: 觉行悟
Title: 大数据技术技能分析大赛——第三章 数据预处理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/754471/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球