'''
上期回顾:
学习对DataFrame数据记录进行各项选择前的初步和整体的了解。
本次:
我们将学习对DataFrame数据记录进行的各种选择!
因为2019-12-16(二)我们有在DataFrame中修改了数据集的索引index的值,所以我们利用2019-12-13(一)所学的知识,重新将数据导入到DataFrame中
'''
##Pandas:数据分析包
import pandas as pd
#numpy:科学计算包
import numpy as np
#xlwings:python操作Excel的模块,最好的Excel操作包之一,有取代VBA的趋势
import xlwings as xw
#声明Excel应用程序,及workboos文件路径
file= r'D:\VBA\LEARNING_ERP.xlsm'
wb=xw.Book(file)
wb.app.display_alerts=False
#“view”作为存放结果数据集的sheet表
sht_view=wb.sheets['view']
##“基础表”作为存放原始数据集的sheet表
sht_base=wb.sheets['基础表']
##选中employee 所在的区域,第25行第1列
range_employee=sht_base[25,1].api.currentregion
##命名区域
range_employee.name='range_employee'
##导入Dataframe
df_employee=sht_base['range_employee'].options(pd.DataFrame, header=1,index=True).value
##index=True,指示使用原始数据集中的索引默认第一列,而不是使用自动索引
##header=1,指示使用原始数据集中的第一列作为列名,而不是使用自动列名,更多使用方法,将在后面陆续介绍。
'''按F5运行程序,然后在IDE右下方的即时窗口In:后面输入print(df_employee),按回车,显示如下:'''
##切入本次的正题了!
#判断元素中有没有空值
df_employee.isnull()
df_employee.isna()
# isna() 和 isnull() 对于空值的判断结果是一样的。就像男生女生相处,不舍得花时间或者不舍得花钱在对方身上,那一定不是很喜欢他/她的! 至少此刻“情况属实”。
#判断元素中有没有空值,除了用isna() 和 isnull() ,也可以用反向指标notna()和notnull,即:如果他/她不吝啬花时间和钱在她/他身上,那一定是喜欢她/他的,至少此刻是这样的。
'''
如果只是想看有哪些列有空值,可以这样做,df_employee.isnull().any() 只要该列中有一个是空值,该列就返回True;df_employee.notnull().all()该列中全部是非空值,该列才返回True。
'''
df_employee.isnull().any()
df_employee.notnull().all()
#姓名列全部为非空值,所以.isnull().any()返回False,而工龄列,张五有一个空值,所以返回True
#姓名列全部为非空值,所以notnull().all()返回True,而工龄列,张五有一个空值,所以返回False。
#大家也可以试一下df_employee.isna().any() 和df_employee.notna().all(),用法一样。
#也可以对特定的一列或数列进行上述操作,如df_employee['特点'].isnull(),df_employee['特点'].isnull().any()。
'''
df_employee[['特点','年龄']].isnull().any(),记得对多列进行操作时,要把列名放在[]里面,即有两个中括号,如:[['特点','年龄']]
'''
'''
也可以对特定的一行或数行进行上述操作,loc[行的索引值,列名]是根据索引值和列名来进行选择的,iloc[:,:]是根据行的位置和列的位置来进行选择的,下面iloc[0:2,:].isnull().any()是判断第1-2行中有没有空值,行的上限从0开始,0:2,包括上限0,不包括下限2 ,:列前后为空,表示全选。
'''
df_employee.iloc[0:2,:].isnull().any()
#loc和iloc,我们会在后面作较为详细的介绍,看下面的例子,在这里,大家只要有一个初步认识就可以
#*****
Ps:
小乐:感觉有点复杂啊,头都有点晕了!
小欣:头晕证明你有用心在学!“晕了,多想一想,多练一练、再想一想”,这样反复循环后,你就会越来越精通啦!
小乐:Python看起来很美,但精通好像有点难呢!
小欣:学习曲线越陡峭,投入的时间-收益比,就越大!想想看,如果你相亲的对象条件越好(如:家庭、见识、志向、兴趣、爱好、职业、品味... ...),是不是越不容易和你“闪婚”,然而,一但你们“永结同心后”,你的人生是不是迈入到更美妙的境界呢?婚姻是人生重要的选择,是重生的第二次机会。正如开挂的人生里,学习高效办公、自动化办公你选——一定要选Python!从繁杂的事务中解放出来,有更多的时间用来开挂你的人生!
#*****