pandas中drop用法_如何使用drop方法对数据进行删减处理
在我們進行數據分析時,某些情況下我們會需要對數據作出一系列的刪減處理。今天就為大家推薦一下在Python中常用于數據刪減的drop方法。
在Pandas 中,以 .drop 開頭的方法都與數據的刪減有關。
下面我們先簡單說一下drop的用法及一些主要參數:
drop函數:drop(labels, axis=0, level=None, inplace=False, errors='raise')
關于參數axis:
axis為0時表示刪除行,axis為1時表示刪除列,還是一樣~
關于參數errors:
errors='raise'會讓程序在labels接收到沒有的行名或者列名時拋出錯誤導致程序停止運行,errors='ignore'會忽略沒有的行名或者列名,只對存在的行名或者列名進行操作,沒有指定的話也是默認‘errors='raise'’。
其他主要參數:
介紹完函數體,下面我們還是一樣從例子出發:
(大家記得每次打代碼之間記得看下有沒有導入庫,我偶爾會忘了粘上庫的代碼)
import pandas as pd import numpy as np cities = pd.DataFrame(np.random.randn(5, 5),index=['a', 'b', 'c', 'd', 'e'],columns=['shenzhen', 'guangzhou', 'beijing', 'nanjing', 'haerbin']) cities還是之前的那個城市的數據表。
(1)刪除掉第a行:
df1=cities.drop(labels='a') df1df2=cities.drop(index='a') df2可以看到,因為這里我們是刪除行,所以我們用labels、index都是可以的。不過還是推薦使用labels。而已還是要注意~drop默認對原表不生效,如果要對原表生效,需要添加參數:inplace=True
(2)刪除非連續的多行:
和上面一樣,我們可以通過labels來控制刪除行或列的個數,如果是刪多行/多列,需寫成labels=[1,3],不能寫成labels=[1:2],在這里用“:”號的話會報錯。
舉個例子:
df1=cities.drop(labels=['a','c','e']) df1這里我們要插播一下比較細節的東西,大家以后可能會遇到的一個問題:
為了方便看,我們這次不設置索引名,下面重新創建一下數據表:
city = pd.DataFrame(np.random.randn(5, 5),columns=['shenzhen', 'guangzhou', 'beijing', 'nanjing', 'haerbin']) city我們還是刪掉第1行(1實際上是第二行),而已這一次我們加上inplace=True:
city.drop(labels=1,axis=0,inplace=True)然后我們看一下原來的數據表city:
可以看到,第1行確實被刪掉了,看上去好像沒什么問題。
如果這個時候,我們再輸入一次:
city.drop(labels=1,axis=0,inplace=True)(報錯了,很應該啊,好像也沒什么,畢竟第1行本來就被我們刪掉了)
但是!!!注意了,我們在這里想說明的是:
如果我們沒標注索引,而已把數據一行一行刪掉的話,該行對應的索引也是被我們刪掉的!
比如說一個數據表里一共有5行,我們把第2、第3行給刪掉了,就會順道對應把索引2、索引3刪掉,這時候數據的索引就會變成[1、4、5],即使這個時候原來的第4行數據現在變成第2行了,現在也無法用索引第2行的方式來獲取現在的第2行(原來的第4行),因為索引已經亂了。
所以說,大家在用drop的時候還是要注意這一點的。同時,我們該如何解決這個問題呢?
答案是要將索引重置,這樣后面再次使用才不會因為索引不存在而報錯。
重置索引的方法是:reset_index
reset_index,默認(drop = False),當我們指定(drop = True)時,則不會保留原來的index,會直接使用重置后的索引。
我們來實驗一下:
----------------------------------------------------------------------------------------------
這是原來刪掉第1行后的數據表:
很明顯索引沒重置,所以在我們再次刪除時,出現了下面這種情況:
下面我們使用reset_index進行索引重置:
可以看到,此時數據表增加了一列新的索引,同時原來的索引被被保留了下來。
如果我們想直接使用重置后的索引,不保留原來的index,就可以加上(drop = True),如下所示:
city.reset_index(drop=True)也就是說這個時候,原來被我們刪除的那行數據已經沒了,但是索引沒有變亂。
這個時候我們再試試刪除第1行,果然沒有問題了。
-----------------------------------------------------------------------------------------------
補充完上面的解釋,我們接下去介紹drop的其他用法。
(3)刪除連續的多行:
當我們想刪除連續多行時,如果還是一個一個標簽輸入的話,顯得不太智能,所以我們可以用更簡便的方法:
再建一個新的數據表:
people= pd.DataFrame(np.random.randn(6, 6),columns=['jack', 'rose', 'mike', 'chenqi', 'amy','tom']) people當我們想刪去第2-4行時,可以用如下表示:
df2=people.drop(labels=range(2,5),axis=0) df2注意了,不能用這種方法嘗試刪除列,會報錯。
(4)刪除列:
在最新的表中刪除‘jack’這一列:
df2=people.drop(labels='jack',axis=1) df2同時刪除‘rose’、‘mike’這兩列:
df2=people.drop(labels=['rose','mike'],axis=1) df2以上便是<如何使用drop方法對數據進行刪減處理>的內容,感謝大家的細心閱讀,同時歡迎感興趣的小伙伴一起討論、學習,想要了解更多內容的可以看我的其他文章,同時可以持續關注我的動態~
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的pandas中drop用法_如何使用drop方法对数据进行删减处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一般将来时语法课教案_【语法视频课】第4
- 下一篇: wayland与linux_将Linux