时间:2022-12-10来源:www.pcxitongcheng.com作者:电脑系统城
拿到一堆数据,首先我们是要对其进行数据的预处理,其中数据存在一些值为空或者是我们不想要的数据,对其进行删除或者是修改数据值。下面是对于该例子进行删除和修改:
1 2 3 4 5 6 7 8 9 |
>>> df out[]: salary age gender 0 10000 23 男 1 15000 34 女 2 23000 21 男 3 0 20 女 4 28500 0 男 5 35000 37 男 |
1. df.replace()方法:将“男”用1来表示,“女孩”用0来表示。
1 2 3 4 5 6 7 8 9 |
>>> df.replace([ "男" , "女" ], [ 1 , 0 ]) out[]: salary age gender 0 10000 23 1 1 15000 34 0 2 23000 21 1 3 0 20 0 4 28500 0 1 5 35000 37 1 |
2. pd.DataFrame.loc()方法来指定列中数据为0的行:
1 2 3 4 5 6 7 8 |
>>> df = df.loc[~((df[ 'salary' ] = = 0 ) | (df[ 'age' ] = = 0 ))] >>> df out[]: salary age gender 0 10000 23 1 1 15000 34 0 2 23000 21 1 3 35000 37 1 |
还可以用:
df = df.loc[df['salary'] * df['age'] != 0]
1.删除全行都是为0的行
代码如下:
1 | >>> df.loc[~(df = = 0 ). all (axis = 1 )] |
看起来比较对称可以这样写:
1 | >>> df.loc[(df! = 0 ). any (axis = 1 )] |
使用dropna方法来删除:
1 | >>> new_df = df[df.loc[:]! = 0 ].dropna() |
2.用nan替换零,然后删除所有行中数据都为nan的行。之后,将nan替换为零。
代码如下:
1 2 3 4 |
import numpy as np df = df.replace( 0 , np.nan) # 把0替换成nan df = df.dropna(how = 'all' , axis = 0 ) # 删除所有为nan的行 df = df.replace(np.nan, 0 ) # 再把nan替换成0 |
3.删除某行中某个值为0的行
代码如下:|
1 | >>> df = df[df[ 'salary' ] ! = 0 ] |
4.使用lambda函数来删除行
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pandas as pd import numpy as np np.random.seed( 0 ) df = pd.DataFrame(np.random.randn( 5 , 3 ), index = [ 'one' , 'two' , 'three' , 'four' , 'five' ], columns = list ( 'abc' )) df.loc[[ 'one' , 'three' ]] = 0 # 把第一行和第三行改为0 print (df) print (df.loc[~df. apply ( lambda row: (row = = 0 ). all (), axis = 1 )]) |
输出为:
要在任何行中删除所有值为0的列:
1 2 |
new_df = df[df.loc[:]! = 0 ].dropna() new_df |
输出为:
到此这篇关于python数据分析之如何删除value=0行的文章就介绍到这了
2023-03-17
python flask项目打包成docker镜像发布的过程2023-03-17
python调试模块ipdb详解2023-03-17
python使用openai生成图像的超详细教程python cron定时任务触发接口自动化巡检 apscheduler报错:Run time of job …… next run at: ……)” was missed by misfire_grace_time参数 找到任务超时的根本原因...
2023-03-15