<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
drop()函數用於刪除指定行,指定列,同時可以刪除多行多列
語法格式:
DataFrame.drop( self, labels=None, axis: Axis = 0, index=None, columns=None, level: Level | None = None, inplace: bool = False, errors: str = "raise", )
引數說明:
當 axis=0 時,刪除指定行
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'], 'data2': [1, 1, 2, 3, 4, 5, 5, 5]},index=list('abcdefgh')) print(df_obj) # 刪除第一行 df_obj.drop(labels='a', axis=0, inplace=True) print(df_obj)
執行結果:
當 axis=1 時,刪除指定列
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'], 'data2': [1, 1, 2, 3, 4, 5, 5, 5]}, index=list('abcdefgh')) print(df_obj) # 刪除data2 df_obj.drop(labels='data2', axis=1, inplace=True) print(df_obj)
執行結果:
del()函數與drop()函數相比就沒有那麼靈活了,此操作會對原資料df進行刪除,且一次只能刪除一列。
語法格式:
del df[‘列名']
案例:
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'], 'data2': [1, 1, 2, 3, 4, 5, 5, 5]}, index=list('abcdefgh')) print(df_obj) # 刪除data1 del df_obj['data1'] print(df_obj)
執行結果:
判斷序列元素是否為缺失(返回與序列長度一樣的bool值)
範例程式碼:
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', 'b', 'b', 'c'], 'data2': [1, 2, 3, 4, 5], 'data3': np.NaN}) print(df_obj) print(df_obj.isnull())
執行結果:
isnull().any()
會判斷哪些”列”存在缺失值,資料淨化中經常用的小技巧
print(df_obj.isnull().any())
執行結果:
isnull().sum()
統計每一列的缺失個數
print(df_obj.isnull().sum())
執行結果:
判斷序列元素是否不為缺失(返回與序列長度一樣的bool值),用法與isnull()相似
print(df_obj.notnull())
執行結果:
dropna()函數可以刪除缺失值
語法格式:
DataFrame.dropna( self, axis: Axis = 0, how: str = "any", thresh=None, subset=None, inplace: bool = False, )
引數說明:
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', np.NaN, 'b', 'c'], 'data2': [1, 2, np.NaN, 4, 5], 'data3': np.NaN, 'data4': [1, 2, 3, 4, 5]}) print(df_obj)
執行結果:
預設 axis=0
print(df_obj.dropna())
執行結果:
設定
axis=1
刪除列
print(df_obj.dropna(axis=1))
執行結果:
設定引數
how="all"
,只有行一整行資料都是NaN的時候才會刪除
print(df_obj.dropna(axis=0,how="all"))
執行結果:由於所有行都有至少有一個有效值,所有都沒刪除
print(df_obj.dropna(axis=1,how="all"))
執行結果:
subset引數設定指定列
# 刪除data1列有含有缺失的行 print(df_obj.dropna(subset=["data1"], axis=0))
執行結果:
缺失值填充
語法格式:
fillna( self, value: object | ArrayLike | None = None, method: FillnaOptions | None = None, axis: Axis | None = None, inplace: bool = False, limit=None, downcast=None, ) -> DataFrame | None
引數說明:
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', np.NaN, 'b', 'c'], 'data2': [1, 2, np.NaN, 4, 5], 'data3': np.NaN, 'data4': [1, 2, 3, 4, 5]}) print(df_obj)
執行結果:
# 用0填補空值 print(df_obj.fillna(value=0))
執行結果:
設定引數
method='pad'
用前一行的值填補空值
# 用前一行填充 print(df_obj.fillna(method='pad',axis=0))
執行結果:
設定引數
method='backfill'
# 用後一列的值填補空值 print(df_obj.fillna(method='backfill', axis=1))
執行結果:
limit=數位,設定填充個數
# 用後一列的值填補空值,只填充兩個 print(df_obj.fillna(method='backfill', axis=1, limit=2))
執行結果:
前向後填充缺失值,用缺失值的前一個元素填充,與fillna()相比沒有那麼多可選性
語法格式:
ffill( self: DataFrame, axis: None | Axis = None, inplace: bool = False, limit: None | int = None, downcast=None, ) -> DataFrame | None
案例說明:
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'], 'data2': [1, 1, 2, 3, np.NaN, 5, 5, np.NaN]}) print(df_obj) print(df_obj.ffill())
執行結果:
後向填充缺失值,用缺失值的後一個元素填充
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'], 'data2': [1, 1, 2, 3, np.NaN, 5, 5, np.NaN]}) print(df_obj) print(df_obj.bfill())
判斷序列元素是否重複
語法格式:
DataFrame.duplicated(subset=None,keep='first')
引數說明:
返回布林型Series表示每行是否為重複行
範例程式碼:
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'], 'data2': [1, 1, 2, 3, 4, 5, 5, 5]}) print(df_obj) print(df_obj.duplicated())
執行結果:
刪除重複行,預設判斷全部列,可指定按某些列判斷
語法格式:
DataFrame.drop_duplicates( self, subset: Hashable | Sequence[Hashable] | None = None, keep: Literal["first"] | Literal["last"] | Literal[False] = "first", inplace: bool = False, ignore_index: bool = False, ) -> DataFrame | None
引數說明:
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'], 'data2': [1, 1, 2, 3, 4, 5, 5, 5]}) print(df_obj) print(df_obj.drop_duplicates())
執行結果:
print(df_obj.drop_duplicates('data2'))
執行結果:
替換元素,可以使用正規表示式
語法格式:
replace( self, to_replace=None, value=None, inplace: bool = False, limit=None, regex: bool = False, method: str = "pad", )
引數說明:
to_replace接收字串
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'], 'data2': [1, 1, 2, 3, np.NaN, 5, 5, np.NaN]}) print(df_obj) print(df_obj.replace('a',"A"))
執行結果:
to_replace接收列表
print(df_obj.replace([1, 2], -100))
執行結果:
to_replace接收列表,value接收列表
print(df_obj.replace([1, 2], [-100, -200]))
執行結果:
to_replace接收正則語法,設定 regex=True
import numpy as np import pandas as pd df_obj = pd.DataFrame({'data1': ['ab', 'abc', 'aaa', 'b', 'b', 'b', 'c', 'c'], 'data2': [1, 1, 2, 3, np.NaN, 5, 5, np.NaN]}) print(df_obj) # 替換a開頭的 print(df_obj.replace('a.?',"A",regex=True))
執行結果:
替換元素,可使用正規表示式
import numpy as np import pandas as pd s = pd.Series(['foo', 'fuz', np.nan]) print(s) print(s.str.replace('f.', 'ba', regex=True))
執行結果:
以指定字元切割列
import numpy as np import pandas as pd data = {'洗漱用品':['毛巾|牙刷|牙膏']} df = pd.DataFrame(data) print(df) print(df['洗漱用品'].str.split('|',expand=True))
執行結果:
到此這篇關於Pandas資料淨化函數總結的文章就介紹到這了,更多相關pandas資料淨化 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45