Python数据分析基础与应用(微课版) 教案 模块5 应用与实战.docx

Python数据分析基础与应用(微课版) 教案 模块5 应用与实战.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Python数据分析基础与应用

模块

PAGE2

PAGE21

模块5Pandas数据预处理

【应用与实战】

【任务5-1】药品销量数据预处理

【任务描述】

Excel文件“药品销售数据.xlsx”共有6578条药店的药品销售数据,该Excel文件共有7列有效数据,分别为:购买时间、社保卡号、商品编码、商品名称、销售数量、应收金额、实收金额,通过分析药品销售数据,看看医院那些药物购买者较多,那些天购药者较多等等。

本任务主要完成列名重命名、删除重复值、处理缺失值、转换数据类型、处理异常数据、按照销售时间对数据集进行排序并重置索引等数据预处理,数据导入与数据审阅详见模块4的【任务4-1】。

【任务实现】

在JupyterNotebook开发环境中创建t5-01.ipynb,然后在单元格中编写代码与输出对应的结果。

1.选择子集

在获取到的数据集中,据量非可能数常庞大,并不是每一列数据都有分析的价值,这时就需要从整个数据集中选取合适的子集进行分析,这样能从数据中获取最大价值。本任务中不需要选取子集,暂时可以忽略这一步。本任务分析Excel文件中的工作表Sheet1。

2.列名重命名

在数据分析过程中,有些列名和数据容易混淆或产生歧义,这不利于数据分析,这时可以采用rename()函数把列名换成容易理解的名称。

代码如下:

colNameDict={购药时间:销售时间}

inplace参数的默认值是False,表示数据集本身不会变,而会创建一个新的数据集;

若inplace=True,则数据集本身会变化

salesDf.rename(columns=colNameDict,inplace=True)

salesDf.head()

3.删除重复值

通过对比删除重复值前后数据,可以发现本数据集中没有重复值。

代码如下:

print(删除重复值前大小:,salesDf.shape)

salesDf=salesDf.drop_duplicates()

print(删除重复值后大小:,salesDf.shape)

输出结果如下:

删除重复值前大小:(6578,7)

删除重复值后大小:(6578,7)

4.统计缺失值并输出包含缺失值的行

获取的药品销售数据中很有可能存在缺失值,通过数据集的基本信息可以推测“销售时间”和“社保卡号”这两列存在缺失值,如果不处理这些缺失值会干扰后面的数据分析。

(1)统计缺失值

代码如下:

salesDf.isnull().sum()

输出结果如下:

销售时间2

社保卡号2

商品编码1

商品名称1

销售数量1

应收金额1

实收金额1

dtype:int64

(2)输出包含缺失值的行

代码如下:

salesDf[salesDf.isnull().T.any()]

输出结果如下:

5.处理缺失值

缺失值常用的处理方式为删除含有缺失值的记录或者填充缺失值。如果缺失值很少,可以直接将其删除;如果缺失值量较多,超过了总数据量的10%,要根据业务情况进行删除或填充。填充缺失值时,可以采用平均值、中位数进行填充;如果数据记录之间有明显的顺序关系,则可以采用附近相邻的数据进行填充。

(1)删除“销售时间”列有缺失值的行

代码如下:

salesDf1=salesDf.copy()

print(删除缺失值之前的大小:,salesDf1.shape)

salesDf1=salesDf1.dropna(axis=0,how=all)

salesDf1=salesDf1.dropna(subset=[销售时间],how=any)

print(删除缺失值之后的大小:,salesDf1.shape)

输出结果如下:

删除缺失值之前的大小:(6578,7)

删除缺失值之后的大小:(6576,7)

(2)查看“社保卡号”列有缺失值的行

代码如下:

salesDf1[salesDf1.isnull().T.any()]

(3)填充“社保卡号”列的缺失值

对“社保卡号”列的缺失值使用100000000进行填充。

代码如下:

salesDf1[社保卡号].fillna(100000000,inplace=True)

print(salesDf1.isnull().sum())

print(salesDf1.isnull().any())

输出结果如下:

销售时间0

社保卡号0

商品编码0

商品名称0

销售数量0

应收金额0

实收金额0

dtype:int64

销售时间False

社保卡号False

商品编码False

商品名称False

销售数量

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档