Python数据分析与可视化教案3.6 数据的填充与替换.docx
《Python数据分析与可视化教案3.6 数据的填充与替换.docx》由会员分享,可在线阅读,更多相关《Python数据分析与可视化教案3.6 数据的填充与替换.docx(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课 题3.6数据的填充与替换课 型讲练授课班级大数据授课时数2教学目标1 .能够利用指定值或统计指标填充空值。2 .能够将数据中的指定值进行替换。教学重点1 .能够利用指定值或统计指标填充空值。2 .能够将数据中的指定值进行替换。教学难点1.替换时注意字典的使用方法。学情分析学情分析在数据预处理时,常常需要将字符型数据的单位去掉变为数值型,这就需要使用替换的方法,替换时需要有时需要用到之前学到的字典。在对数据进行预处理时,去空和去重是两个非常重要的方法。去空是指去除带有 空值的数据,去重是指去除重复数据。一、数据去空数据中的某个或某些特征的值是不完整的,这些值称为缺失值,简单来说,缺失 值就是
2、空值。1 .查看空值pandas提供了识别空值的方法isnull,这种方法在使用时返回的都是布尔值True 和False。再结合sum函数,可以检测出数据中每列的空值频数,统计各列空值频数 的一般用法为:_DataFrame.isnull().sum()例如代码如下:import numpy as npimport pandas as pdarr = np.arange( 1,17).reshape(4,4)data = pd.DataFrame(air,columns=,a,b,c,/d,)data.ilocl :3,1:4 = np.nan#表示将行索引编号1到2,列索引编号1到3的数据都
3、设为空值data.loc|0,3/b,l = np.nan#表示将行索引编号1和3,列索引b的数据都设为空值print(初始数据为据”,data)print(各列的空值频数为:rT,data.isnull().sum()【结果分析】利用np. nan可以生成DataFrame的空值。输出结果如图3-*所示。Run:3-5AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-5.py初始数据为:a b c d1方01NaN3.04.015NaNNaNNaN.29NaNNaNNaNW3 13 NaN 1
4、5.0 16.0 各列的空值频数为:a 0b 4c 2d 2dtype: int64Process finished with exit code 0图3-*统计各列的空值频数例如结果2 .删除空值删除空值是删除带有空值的行或列,它属于利用减少样本量来换取信息完整度的 一种方法,是一种最简单的空值处理方法。pandas中提供了删除空值的dr叩na函数, 该函数可以删除带有空值的行或列。在实际操作中,删除带有空值的行的情况比拟多。 dropna函数的一般用法为:DataFrame.dropna(axis,how,subset=columns,inplace)其中,各个参数的作用如下:axis接收
5、。或1。axis=0表示删除空值所在的行,axis=l表示删除空值所在的列。默认为axis=O,即删除空值所在的行。how表示删除空值数据的方式。how二,any,表示只要有空值存在就删除。how-all 表示当且仅当全部为空值时就删除。默认为any。subset表示进行去空操作的列或行。按行删除时,subset表示columns列名,而 按列删除时,subset表示行索引index。inplace表示删除结果是否替换原表,默认为False。(1)删除空值所在行删除空值所在行的一般用法为:DataFrame.dropna(axis=0,how,subset,inplace)其中,axis=0为
6、删除空值所在的行。subset表示按行删空时,需要考虑的列。例如代码如下:data_dropl = data.dropna(axis=0,how=any,subset=aVb7c)print(删除abc三列中任意一列中出现空值的行:n”,data_dropl)data_drop2 = data.dropna(axis=0,how=all,subset=a?b?c)print(删除abc三列中任全部都为空值的行:n”,data_drop2) 输出结果如图3-*所示。Run:3-5AC:UsersliliangAnaconda3python.exe C:/Users/liliang/Pycharm
7、Projects/sjfx/3-5.py初始数据为: abed rp 0 1.0 2.0 3.0 4.0 1 NaN NaN NaN NaN ” . 2 9.0 NaN NaN NaNW 3 NaN NaN 15.0 16.0 删除abc三列中任意一列中出现空值的行: abed0 1.0 2.0 3.0 4.0删除abc三列中任全部都为空值的行: abed01.02.03.04.029.0NaNNaNNaN3NaNNaN15.016.0Process finished with exit code 0图3-*删除空值所在行例如结果【结果分析】axis=0表示按行删空,subset表示列名,进一
8、步分析abc三列。 在how=any的情况下,行索引为1、2、3三条数据都有任意一列出现空值,所以都 被删除了,只保存了索引号为0的行数据。在how=al I 的情况下,只有行索引为1的 一条数据三列都是空值,所以行索引为1的行数据被删除了,保存了索引号为0、2、 3的行数据。(2)删除空所在值列删除空值所在列的情况较少,因为通常情况下,不会因为一列中存在一个空值而 把整个一列都删除,这样丧失的信息量就会太大。_删除空值所在列的一般用法为:_DataFrame.dropna(axis= 1,how,subset,inplace)其中,axis=l为删除空值所在的列。在按列删空时,how一般取就
9、,默认也是 all,表示只有当一列中所有行或指定行都为空值才删除该列。subset表示按列删空时, 需要考虑的行,默认是所有行,也可以指定行。在实际操作中,很少会出现一列都是空值的情况,因为如果一列都是空值,那么这一列也就没有包含任何信息。例如代码如下:data_drop3 = data.dropna(axis= 1 ,how=air,subset=range(2,len(data)print。按列删空,删除行索引2之后全部都为空值的列:n”,data_drop3)【结果分析】len(data)表示数据的长度,即I en (data)等于4 , range (2, len (data)就是指r
10、ange (2, 4),因为range表示的是左闭右开的列表,即行 索引2和3,所以range(2, len(data)就可以表示行索引2之后的全部行。输出结果如图3-*所示。Run:3-5Process finished with exit code 0C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-5.py 初始数据为:abed0 1.0 2.03.04.0X1 NaN NaNNaNNaN2 9.0 NaNNaNNaN3 NaN NaN 15.0 16.0按列删空,删除行2之后全部都为空值的
11、列: acd01.03.04.01 NaNNaNNaN2 9.0NaNNaN3 NaN15.016.0图3-*删除空所在值列例如结果【结果分析】按列删空时,subset表示行索引号,进一步分析行索引号2之后 的所有行。在how默认等于all的情况下,b列行索引2和行索引3都是空值,所 以b列被删除了,保存了 a、c、d列的数据。二、数据去重去除重复数据也是数据分析经常面对的问题之一,常见的重复值完全相同的行数 据,或是某几列相同的行数据。1 .查看重复值去除重复数据之前,首先需要了解数据中的重复情况,pandas提供了 duplicates 函数,用来查看数据中的重复情况,duplicates
12、函数一般用法为:DataFrame.duplicates(subset, inplace)其中,subset表示列名。默认为None,表示全部列,即如果一行的所有列出现重 复就返回结果。2 ,删除重复值去除重复数据可以使用pandas提供的去重drop_duplicates函数。使用 drop_duplicates函数对数据进行去重,不会改变数据源的原始排列,并且具有代码简 洁和运行稳定的优点。drop_duplicates函数的一般用法为:DataFrame.drop_duplicates(subset, keep, inplace)其中,subset表示列名。默认为None,表示全部列,即
13、如果一行的所有列出现重 复就删除。keep表示出现重复时保存第一次出现的数据还是最后一次出现的数据,first 表示保存第一次出现的数据,last表示保存最后一次出现的数据。默认为first,即如 果出现重复,保存第一次出现的数据。任务实训任务 1 :利用 read excel 导入 supermarket.xlsx (supermarket.xlsx 存放在 c:data 路径中)中的“销售统计”工作表(第1张工作表),将导入数据的前5行命名为datal,并完成:(1)统计各列的空值频数。(2)删除“客户ID”和“客户姓名”都是空值的行。(3)删除一列中所有的值都为空值的列。任务1 (1)具
14、体代码如下: pd.set_option(display.max_columns,None) pd.set_optionCdisplay. width,None)pd.set_option(,True)datal = pd.read_excel(c:datasupermarket.xlsx).head print(导入的数据为:ndatal)result = datal.isnull().sum()print(各列的空值频数为:n,resultresult0) #通过resultresultO仅仅显示出现 空值的列输出结果如图3-*所示。17* 10产品ID产品名称客户ID客户姓名省城市ta分
15、 仃国日期 发货日期取价 na记金静折扣析扣金做0US-2018-1357144办公用-用品-10002717Fiskars野刀,蓝色14485.0NaN涌江杭州公司 2018-04-27 2018-04-296521300.451CN-2018-1973789办公用-信封-10004832Globeweis搭扣信封,红色10165.0许安四川内江消费者 2018-86-15 2018-06-196321260.02CN-2018-1973789办公用-装订-10001505Cardinal孔加固材料,回收1016S.0许安四川内江消费者 2018-O6-1S 2018-06-19162320
16、.4与3US-2018-3017568办公用-用8-10003746Kleencut开信刀,工业NaNNaN江苏慎江公司 2018-12-09 2018-12-138043200.44CN-2017-2975416力公用183352KitchenAid搅搏机,黑色15730.0万丝广东汕头消费者 2917-05-31 2017-06-02459313770.0Run:3-S导入的收媚为:各那么的空值跖U为:客户ID 1客户姓名 2折扣金献 5dtype: int64r aN Nail NahhaM Na iProcess finished with exit code 0图3.*任务1(1)输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python数据分析与可视化 教案3.6 数据的填充与替换 Python 数据 分析 可视化 教案 3.6 填充 替换
限制150内