
正文
关于python函数缺失的信息
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
python检查是否有缺失值
统计data里每一列是否有空值:
data.isnull().any()
统计data里每一列空值的个数:
data.isnull().any().sum()
但是有的时候,明明有空值却统计不出来。
最近我遇到的数据,空值的填充是null,这个需要转化一下才可以用上面的函数。
data = data.replace('null',np.NaN)
然后你再继续用data.isnull().any(),ata.isnull().any().sum()就没问题了。
如果这么做,你的问题还没解决,查看你的缺失值的填充是什么,用np.NaN替代。、
另外的方法:
np.any(np.isnan(data))
np.all(np.isfinite(data))
相关问答
Q1: Python数据分析案例-药店销售数据分析
最近学习了Python数据分析python函数缺失的一些基础知识,就找了一个药品数据分析的小项目来练一下手。
数据分析的目的:
本篇文章中,假设以朝阳医院2018年销售数据为例,目的是了解朝阳医院在2018年里的销售情况,通过对朝阳区医院的药品销售数据的分析,了解朝阳医院的患者的月均消费次数,月均消费金额、客单价以及消费趋势、需求量前几位的药品等。
数据分析基本过程包括:获取数据、数据清洗、构建模型、数据可视化以及消费趋势分析。
数据准备
数据是存在Excel中的,可以使用pandas的Excel文件读取函数将数据读取到内存中,这里需要注意的是文件名和Excel中的sheet页的名字。读取完数据后可以对数据进行预览和查看一些基本信息。
获取数据:朝阳医院2018年销售数据.xlsx(非真实数据) 提取码: 6xm2
导入原始数据
数据准备
数据是存在Excel中的,可以使用pandas的Excel文件读取函数将数据读取到内存中,这里需要注意的是文件名和Excel中的sheet页的名字。读取完数据后可以对数据进行预览和查看一些基本信息。
获取数据:朝阳医院2018年销售数据.xlsx(非真实数据) 提取码: 6xm2
导入原始数据
数据清洗
数据清洗过程包括:选择子集、列名重命名、缺失数据处理、数据类型转换、数据排序及异常值处理
(1)选择子集
在python函数缺失我们获取到的数据中,可能数据量非常庞大,并不是每一列都有价值都需要分析,这时候就需要从整个数据中选取合适的子集进行分析,这样能从数据中获取最大价值。在本次案例中不需要选取子集,暂时可以忽略这一步。
(2)列重命名
在数据分析过程中,有些列名和数据容易混淆或产生歧义,不利于数据分析,这时候需要把列名换成容易理解的名称,可以采用rename函数实现:
(3)缺失值处理
获取的数据中很有可能存在缺失值,通过查看基本信息可以推测“购药时间”和“社保卡号”这两列存在缺失值,如果不处理这些缺失值会干扰后面的数据分析结果。
缺失数据常用的处理方式为删除含有缺失数据的记录或者利用算法去补全缺失数据。
在本次案例中为求方便,直接使用dropna函数删除缺失数据,具体如下:
(4)数据类型转换
在导入数据时为了防止导入不进来,会强制所有数据都是object类型,但实际数据分析过程中“销售数量”,“应收金额”,“实收金额”,这些列需要浮点型(float)数据,“销售时间”需要改成时间格式,因此需要对数据类型进行转换。
可以使用astype()函数转为浮点型数据:
在“销售时间”这一列数据中存在星期这样的数据,但在数据分析过程中不需要用到,因此要把销售时间列中日期和星期使用split函数进行分割,分割后的时间,返回的是Series数据类型:
此时时间是没有按顺序排列的,所以还是需要排序一下,排序之后索引会被打乱,所以也需要重置一下索引。
其中by:表示按哪一列进行排序,ascending=True表示升序排列,ascending=False表示降序排列
先查看数据的描述统计信息
通过描述统计信息可以看到,“销售数量”、“应收金额”、“实收金额”这三列数据的最小值出现了负数,这明显不符合常理,数据中存在异常值的干扰,因此要对数据进一步处理,以排除异常值的影响:
数据清洗完成后,需要利用数据构建模型(就是计算相应的业务指标),并用可视化的方式呈现结果。
月均消费次数 = 总消费次数 / 月份数(同一天内,同一个人所有消费算作一次消费)
月均消费金额 = 总消费金额 / 月份数
客单价 = 总消费金额 / 总消费次数
从结果可以看出,每天消费总额差异较大,除了个别天出现比较大笔的消费,大部分人消费情况维持在1000-2000元以内。
接下来,我销售时间先聚合再按月分组进行分析:
结果显示,7月消费金额最少,这是因为7月份的数据不完整,所以不具参考价值。
1月、4月、5月和6月的月消费金额差异不大.
2月和3月的消费金额迅速降低,这可能是2月和3月处于春节期间,大部分人都回家过年的原因。
d. 分析药品销售情况
对“商品名称”和“销售数量”这两列数据进行聚合为Series形式,方便后面统计,并按降序排序:
截取销售数量最多的前十种药品,并用条形图展示结果:
结论:对于销售量排在前几位的药品,医院应该时刻关注,保证药品不会短缺而影响患者。得到销售数量最多的前十种药品的信息,这些信息也会有助于加强医院对药房的管理。
每天的消费金额分布情况:一横轴为时间,纵轴为实收金额画散点图。
结论: 从散点图可以看出,每天消费金额在500以下的占绝大多数,个别天存在消费金额很大的情况。
/article
Q2: python数据分析模块:numpy、pandas全解
一维数组情况:
二维数组情况:
3参数情况:
2参数情况:
1参数情况:
一维情况:
二维情况:
一维情况:
二维情况:
一维情况:
二维情况:第三个参数指定维度
只查看行数、或者列数
逗号隔开两个索引
某些行
某些列
可以看出append()函数在二维数组中添加元素,结果转为了一维数组。
那怎么保持二维数组呢?可以设置axis参数按行或者按列添加
可以看出先把二维数组降成了一维数组,再在索引为1的位置添加元素。
那么怎么保持在二维添加元素呢? 同样设置axis参数
也分按行和按列删除
标记缺失值: isnan()函数
补充缺失值:
同样axis参数可以指定拼接按行还是按列
2. hstack()函数:以水平堆叠的方式拼接数组
3. vstack()函数:以垂直堆叠的方式拼接数组
第二个参数还可以是数组,指定拆分的位置
hsplit()函数:横向拆成几个数组
vsplit()函数:纵向拆成几个数组
数组与数组之间的运算
数组与数值的运算
可以指定整个数组求和,还是按行或者按列
axis=0:每一列的元素求和
axis=1:每一行的元素求和
axis=0:每一列求均值
axis=1:每一行求均值
axis=0:每一列求最大值
axis=1:每一行求最大值
pandas有两个重要的数据结构对象:Series和DataFrame。
Series是创建一个一维数组对象,会自动生成行标签。
会自动生成行列标签
也可以用字典形式生成数据
在用字典生成数据的基础上,同时指定行标签
例如对下表的数据进行读取
4月是第四个表,我们应把sheet_name参数指定为3;因为索引是从0开始的。
可以看出read_excel()函数自动创建了一个DataFrame对象,同时自动把第一行数据当做列标签。
可以看出不给出header参数时,该参数默认为0。
header=1时结果如下:
header=None时结果如下:
index_col=0时,第0列为列标签
index_col=0时
usecols=[2]:指定第二列
指定多列
数据如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j1SHxY8y-1637655972909)(C:Users14051AppDataRoamingTypora ypora-user-imagesimage-20211114192949607.png)]
nrows=3时
head()函数中参数为空默认前5行
指定head(3)时如下
numpy模块也是shape
查看特定列的书库类型
特定列数据类型转换
先查看一下所有数据
与单行相比,结果显示的格式不一样了
iloc()挑选:
或者给出区间
挑选数据要么标签,要么索引挑选
或者
或者写成区间
标签挑选
或者索引挑选
先查看一下数据
或者用字典一对一修改
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6QKIoie-1637655972912)(C:Users14051AppDataRoamingTypora ypora-user-imagesimage-20211123110431201.png)]
isin()函数查看表中是否有该值
查看特定列是否有该值
可以看出上述代码并没有替换,那怎么替换呢?
末尾插入一列
指定插入到哪列
axis参数可以指定删除行还是删除列
指定标签删除
指定索引删除
方法三
指定行标签删除
指定索引删除
方法三:
先查看所有数据
info()函数查看数据类型,还可以查看是否有缺失值
isnull()函数查看是否有缺失值
在numpy模块中用isnan()函数
删除有缺失值的行
删除整行都为缺失值的行: 需要指定how参数
不同列的缺失值设置不同的填充值
默认保留第一个重复值所在的行,删除其他重复值所在的行
保留第一个重复值所在的行
保留最后一个重复值所在的行
是重复的就删除
降序如下
参数指定first时,表示在数据有重复值时,越先出现的数据排名越靠前
获取产品为单肩包的行数据
获取数量60的行数据
获取产品为单肩包 且 数量60 的行数据
获取产品为单肩包 或 数量60 的行数据
stack()函数转换成树形结构
how参数指定外连接
on参数指定按哪一列合并
concat()函数采用 全连接 的方式,没有的数设置为缺失值
重置行标签
效果与concat()一样
末尾添加行元素
指定列求和
指定列求均值
指定列求最值
获取单列的
corr()函数获取相关系数
获取指定列与其他列的相关系数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-46g9qgQw-1637655972913)(C:Users14051AppDataRoamingTypora ypora-user-imagesimage-20211123135643804.png)]
groupby()函数返回的是一个DataFrameBy对象,该对象包含分组后的数据,但是不能直观地显示出来。
分组后获取指定列的汇总情况
获取多列的汇总情况
获取多列的情况
ta = pd.read_excel(‘相关性分析.xlsx’)
print(data)
corr()函数获取相关系数
获取指定列与其他列的相关系数
[外链图片转存中…(img-46g9qgQw-1637655972913)]
groupby()函数返回的是一个DataFrameBy对象,该对象包含分组后的数据,但是不能直观地显示出来。
分组后获取指定列的汇总情况
获取多列的汇总情况
获取多列的情况
Q3: Python复制到pta上的代码编译错误
+PTA网站验证码即可。
编译错误的解决方案还有就是可以检查缩进是否按照Python的语法进行了,如果报错行紧邻着函数,检查函数是否缺失了语句。
关于python函数缺失和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







