时间: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-11
Python换行输出的方法 Python如何设置换行输出?2022-12-10
pip升级pip3的快速方法指南2022-12-10
vscode配置与python虚拟环境切换的几种方式总结一、使用ddt和data装饰器的大致框架如下,每个test_开头的方法,代表一条测试用例 二、给类动态的增加方法...
2022-12-10