時間:2022-12-10來源:www.caymanbraccottage.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行的文章就介紹到這了
2022-12-10
pip升級pip3的快速方法指南2022-12-10
vscode配置與python虛擬環境切換的幾種方式總結2022-12-10
Python+OpenCV手勢檢測與識別Mediapipe基礎篇一、使用ddt和data裝飾器的大致框架如下,每個test_開頭的方法,代表一條測試用例 二、給類動態的增加方法...
2022-12-10
一.引言先看獲取到的效果拍攝時間:2021:12:18 16:22:13 照片拍攝地址:('內蒙古自治區包頭市昆都侖區', '內蒙古自治區', '包頭市', '昆都侖區&#...
2022-12-10