欢迎光临散文网 会员登陆 & 注册

pandas DataFrame过滤实例:公司员工名单

2023-07-27 11:08 作者:矢来美羽MIUYARAI  | 我要投稿

公司员工名单,包含空数据:employees.csv

链接:https://pan.baidu.com/s/1uGiMnS_Gc0HB39EXK-VHNg?pwd=1234

其中Mgmt为“经理management”的意思。查看信息information:

得到:

Range Index索引范围:1001个条目

memory usage内存使用: 47.0+ KB

1. 数据类型优化

1.1 类型转换:.astype()

将Mgmt由字符串转为bool(NaN默认转为True,可用1.2的方法转换,或用2.5的方法删除)

此时memory usage: 40.2+ KB,缩小14%

1.2 替换缺失值.fillna()

用0替换Salaries最后的缺失值,然后float64转int:

memory usage: 36.3+ KB,缩小22%

1.3 category数据类型(pandas独有)

对于"Gender"(只有2种)、"Team"(只有10种),可以在后台只存储一个副本,而非每个具体值。

现在再看employees.info():

memory usage: 27.0+ KB,缩小42%

2. 条件过滤

2.1 利用Bool Series提取行

过滤出名字中含有"Maria"的数据:(为增加可读性,写成两行、增加中间赋值的环节)

输出:

对于“!=”、“>”等常见条件运算符,均可实现。

如果是多条件,则用“与或非”连接:“&”、“|”、“~”

2.2 isin()替代“或”

当“或”的数量较多,或者经常需要改变值时,适合使用这种。使用列表传入数据:

2.3 between()上下限

当出现包含下限、不包含上限时,可进行简写:

2.4 isnull()空值相关过滤

以及与之对应的notnull()非空值过滤:

2.5 删除空值

行中有any NaN,则删除:(默认)

行中全是NaN,才删除:

行中"Gender"是NaN,才删除:

行中有4个NaN,才删除:

2.6 重复值

将第一次之后的重复项标记为True:(NaN属于唯一值,不重复)

将第一次之后的重复项删去:

如果没有传入参数,则相当于“与”,要求每行的所有列都出现相同才删去:


pandas DataFrame过滤实例:公司员工名单的评论 (共 条)

分享到微博请遵守国家法律