时间:2022-12-10来源:www.pcxitongcheng.com作者:电脑系统城
拿到一堆数据,首先我们是要对其进行数据的预处理,其中数据存在一些值为空或者是我们不想要的数据,对其进行删除或者是修改数据值。下面是对于该例子进行删除和修改:
| 1 2 3 4 5 6 7 8 9 | >>> dfout[]:   salary   age   gender01000023男11500034女22300021男3020女4285000男53500037男 | 
1. df.replace()方法:将“男”用1来表示,“女孩”用0来表示。
| 1 2 3 4 5 6 7 8 9 | >>> df.replace(["男", "女"], [1, 0])out[]:   salary   age   gender0100002311150003402230002113020042850001535000371 | 
2. pd.DataFrame.loc()方法来指定列中数据为0的行:
| 1 2 3 4 5 6 7 8 | >>> df =df.loc[~((df['salary'] ==0) | (df['age'] ==0))]>>> dfout[]:   salary   age   gender010000231115000340223000211335000371 | 
还可以用:
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 | importnumpy as npdf =df.replace(0, np.nan)# 把0替换成nandf =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 | importpandas as pdimportnumpy 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(lambdarow: (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