Python数据分析入门5-6(数据预处理)

Chapter5 数据预处理

1.缺失值查找

# 缺失值查找
df_excel = pd.read_excel(r"C:\Users\aurora\Desktop\dsxwm.xlsx",sheet_name=1)
ic(df_excel.info())         #看数量
ic(df_excel.isnull())

info()函数查看数据信息,isnull()判断是否为空,返回布尔值

2.删除缺失值,用dropna()

# 缺失值的删除,加参数how,删除整行都为空的行,不加参数就会删除含有空值的所有行
ic(df_excel.dropna(how="all"))

3.缺失值的填充,用fillna()

# 缺失值的填充,用键值对
df_excel1 = df_excel.fillna({"销量":"0","货物分类":"牛奶"})
ic(df_excel1)

上述代码表示对销量列的空值用0填充,货物分类列的空值用“牛奶”填充

4.删除重复值,用drop_duplicates(),默认对所有字段去重;subset参数对指定列删除重复值,有多列以列表的形式传入;keep参数设置保留值,默认first保留重复值中的第一个值,last保留最后一个,False删除所有重复值。

# 删除重复值,判断多列重复,用列表形式将列名传入subset
ic(df_excel.drop_duplicates())
ic(df_excel.drop_duplicates(subset='售货员'))

5.数据类型转换

# 数据类型转换,o为pandas的非结构化数据,如字符串类型,不能转为数字类型
ic(df_sql['销售额'].dtype)
df_sql['销量'].astype(int)
ic(df_sql['销量'].dtype)

注意:在数据类型转换中,需要确定两种数据类型可相互转换。例如pandas中不能用astype转换非结构化数据和数值数据,会报错。

5.索引设置

# 将特定列作为行索引
ic(df_sql.set_index("商店名"))
# 重命名列索引
df_sql2 = df_sql.rename(columns={"商店名":"商店编号","销售额":"销售金额"})
df_sql2 = df_sql2.set_index("商店编号")
ic(df_sql2)
# 重命名行索引
df_sql3 = df_sql.rename(index={1:"一",2:"二",3:"三"})
ic(df_sql3)
# 重置索引
ic(df_excel.reset_index())

设置索引用set_index(),重命名用rename,columns参数指定列,index指定行,以字典的方式传入原名称和新的名称。重置索引用reset_index(),默认将索引全部转换为列。
如下图:
在这里插入图片描述
在这里插入图片描述

Chapter6 数据选择

常见数据选择包含行选择,列选择和行列同时选择三种方式。

1.列选择

  • 传入列名。直接在dateframe数据的[]中指明列名,要引入多列用列表形式传入。
  • 传入列的位置。iloc方法后的方括号中,逗号之前的部分表示要获取的行的位置,只输入一个冒号,不输入任何数值表示获取所有的行;逗号之后的方括号表示要获取的列的位置。
  • 切片索引。通过切片选择连续的多列。iloc方法后的方括号中,逗号后面表示要选择列的位置区间,0:3表示选择第1列到第4列之间的值(包含第1列但不包含第4列)
ic(df_excel['售货员'])
ic(df_excel[['售货员','销量']])
# ,之前为行,之后为列,要传入的列放在列表,输出第二列和第四列
ic(df_excel.iloc[:,[1,3]])
# 输出第二列到第四列,不包含第四列,即第二列和第三列
ic(df_excel.iloc[:,1:3])

输出结果如下:
原始数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.行选择

# 选择第一行和第四行
ic(df_excel.iloc[0,3])
# 选择第一行到第四行,不包括第四行
ic(df_excel.iloc[0:3,:])

输出如下:
在这里插入图片描述
在这里插入图片描述
选择满足条件的行

# 条件筛选
ic(df_excel[(df_excel['销量']>2384) & (df_excel['编号']=='SD20') ])

输出如下:
在这里插入图片描述

3.行列同时选择

可以传入索引名称、索引位置、索引切片进行选择

# 第一行和第三行,销量和售货员列
ic(df_excel.loc[[0,2],['销量','售货员']])
# 选择第1到4行,不包括4行,第2到4列,不包括第4列的数据
ic(df_excel.iloc[0:3,1:3])
# 选择第1行第4列的数据
ic(df_excel.iloc[0,3])

输出如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:

  • pandas中寻找行列数据可以用loc和iloc方法。区别在于loc接收行列的名称,遵循闭区间原则;iloc接收行列的索引位置,即从0开始的下标,遵循左闭右开原则。
  • 切片索引中,用逗号分隔行列索引,:默认所有行(列)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值