欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python dataframe如何選擇某一列非空的行

 更新時間:2024年02月02日 10:25:03   作者:達達愛吃肉  
這篇文章主要介紹了python dataframe如何選擇某一列非空的行問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

dataframe選擇某一列非空的行

如下所示:

data 為 dataframe 對象 col 為對應的列

def get_not_null_data(data, col):
    data = data[(data[col].notnull()) & (data[col] != "")]
    return data

dataframe常用方法

【Series】

性質:一維數組對象,類似NumPy 的一維array。

  除了包含一組數據還包含一組索引,所以可以把它理解為一組帶索引的數組。

obj = Series([1,2,3,4],index = [‘a','b','c','d'])  #通過 index 參數顯示指定索引
obj.index obj.values        #單獨獲取 Series 對象的索引或者數組內容

obj*2 obj+1 obj[obj>10]#對Series對象的運算(索引不變)

【DataFrame】

性質:一個表格型的數據結構。它提供有序的列和不同類型的列值。

創(chuàng)建:可以將一個{key:list[]}轉換成DataFrame,key為columns   

DataFrame(data,columns = [‘col0','col1','col2'])#傳入columns參數指定列的順序

如果傳入的列名找不到,它不會報錯,而是產生一列 NA 值

獲取數據:frame[‘col1’]frame.col1

刪除數據:del frame[‘col1’]

【產生日期】

date_index = pd.date_range('11/19/2017', periods=10, freq='D')

常用方法

(1)reindex( )方法:重新索引

根據index參數重新進行排序。如果傳入的索引值在數據里不存在,則不會報錯,而是添加缺失值的新行。

不想用缺失值,可以用 fill_value 參數指定填充值。

e.gobj1 = obj.reindex([‘a','b','c'],fill_value = 0)

#fill_value 會讓所有的缺失值都填充為同一個值,如果不想這樣而是用相鄰的元素(左或者右)的值填充,則可以用 method 參數,可選的參數值為 ffill 和 bfill,分別為用前值填充和用后值填充。
e.g obj2 = obj.reindex(range(6),method = ‘ffill')

(2)drop() 方法:丟棄數據

data.drop([‘idx1','idx2'])#刪除行
data.drop([‘col1','col2'],axis = 1) #添加axis參數刪除列

(3)索引、選取和過濾

[注意]利用索引的切片運算與普通的 Python 切片運算不同,其末端是包含的,既包含最后一個的項。

e.gobj[‘b’:’d’]包含’d’,但是obj[1:3]不包含3

loc和iloc

df.loc[index,column_names]#知道column names 和index,且兩者都很好輸入
df.iloc[index,col_index]#column_name太長;index是時間序列不好輸入 i_index

ix操作:混合使用下標和名稱進行選取

data.ix[‘idx',[‘col1','col2']]
data.ix[2] #第2行
data.ix[data.col1<5,:3] # data.col1<5的前2列

(4)算術運算和數據對齊

1)Series:將2個對象相加時,具有重疊索引的索引值會相加處理;不重疊的索引則取并集,值為 NA;

2)對齊操作會同時發(fā)生在行和列上,把2個對象相加會得到一個新的對象,其索引為原來2個對象的索引的并集;和Series 對象一樣,不重疊的索引會取并集,值為 NA;如果不想這樣,試試使用 add() 方法進行數據

填充:

df1+df2    #會出現(xiàn)NaN
df1.add(df2,fill_value = 0)#無NaN

(5)函數應用和映射

df1.astype(np.int32)
df2.apply(f)  #f = lambda x:x+1

(6)排序

df.sort_index(ascending = False)frame.sort_index(axis = 1)
Series: obj.sort_values()obj.sort_index()

排名

obj.rank(ascending = False) #索引位上的數的排名

帶有重復值的軸索引

obj.index.is_unique#False

索引時,同時輸出多個值 

(7)匯總統(tǒng)計和計算

df.sum()  #縱向匯總(行求和) aixs=1為橫向匯總
df.cumsum()  #縱向匯總_累計匯總
df.idxmax()  #獲取最大值對應的索引
obj.unique()  #返回數據里的唯一值array
obj. value_counts()#統(tǒng)計各值出現(xiàn)的頻率,返回Series索引為值
obj. isin([‘c'])#判斷成員資格,在原表基礎上修正為bool

(8)處理缺失數據

使用isnull()和notnull()函數來判斷缺失情況。

對于缺失數據一般處理方法為濾掉或者填充。

濾除缺失數據

data.dropna()  #返回一個包含非空數據和索引值的表,等價于data[data.notnull()]
data.dropna(how = ‘all')  #只有行里的數據全部為空時才丟棄,axis=1按列丟棄

填充缺失數據

df.fillna(0)  #用默認值填充缺失數據
df.fillna({0:10,1:20,2:200})#可以傳入字典對不同的列填充不同的值(鍵表示列)

(9)層次化索引:能在一個數組上擁有多個索引,有點像Excel里的合并單元格

根據索引選擇數據子集

data[‘a'] #以外層索引的方式選擇數據子集
data[:,2] #以內層索引的方式選擇數據
data.unstack() #多重索引Series轉換為DataFrame,第二層索引為列

重排分級順序

df. swaplevel(‘idx1_name', ‘idx2_name')#將兩個級別的數據進行交換
df. sortlevel(0,ascending = False)#以行按第一層(0)進行排序
df. sortlevel(1,ascending = False,axis=1)#列按第二層(1)進行排序

根據級別匯總統(tǒng)計

多層次索引的數據,匯總的時候可以單獨按照級別進行

df.sum(level='idx1_name')

(10)數據合并

a)pandas.merge():數據庫風格的合并

pd.merge(df1,df2,on='col_coname') #以col_coname列當作鍵,默認內連接(inner),即鍵的交集
pd.merge(df1,df2,on='col_coname',how=‘left')#左連接(left),右連接(right)和外連接[并集](outer)
left.join(right) #以索引作為連接鍵

b)pandas.concat()方法:軸向連接,即沿著一條軸將多個對象堆疊到一起

pd.concat([s1,s2,s3]) #默認concat在豎軸(axis=0)上連接,即產生新的Series。

c)實例方法combine_first()方法:合并重疊數據

s1.combine_first(s2) #等價于np.where(pd.isnull(s1),s2,s1)

這是一個矢量化的if-else操作,如果s1里某個位置上的數據為空,則用s2同位置上的元素來補,你可以理解為“打補丁”操作。 

(11)數據重塑/軸向旋轉

重塑指的是將數據重新排列,也叫軸向旋轉。

stack: 將數據的列“旋轉”為行。unstack:將數據的行“旋轉”為列。

處理堆疊格式

堆疊格式也叫長格式,一般關系型數據庫存儲時間序列的數據會采用此種格式

df.pivot(‘col1','col2','col3') 

(12)數據轉換:對數據的過濾、清理以及其他的轉換操作。

移除重復數據

df.duplicated() #檢測各行是否重復,默認判斷全部列,默認保留第一個出現(xiàn)的值
df.duplicated([‘col1'])   #判斷指定列
df.drop_duplicates() #丟棄重復行
df.drop_duplicates(keep=‘lost') #或傳入take_last=True保留最后一個值

利用映射進行數據轉換

data[‘new_col'] = data[‘col1'].map(col1_to_new_col)#map到一個dict
data[‘col1'].map(lambda x: col1_to_new_col[x]) #等價于使用函數

替換值

data.replace(value,np.nan)
data.replace([value1, value2],[ np.nan,0])

重命名軸索引

data.rename(index=str.title,columns=str.upper)

將數據劃分成不同的組

scores=[40,54,60,85,87,81]
score_levels=[0,60,80,95]
cats = pd.cut(scores,score_levels) #輸出內容為區(qū)間的列表
pd.value_counts(cats) #統(tǒng)計區(qū)間個數

檢測和過濾異常值

data.decsribe() #產生數據的count,mean,std,min…
data[np.abs(data)>2] #找出絕對值大于2的值,不滿足的為nan
data[np.abs(data)>2.any(1)] #找出絕對值大于2的行
data[np.abs(data)>2]=0 #將異常值設置為0

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 淺析Python 實現(xiàn)一個自動化翻譯和替換的工具

    淺析Python 實現(xiàn)一個自動化翻譯和替換的工具

    這篇文章主要介紹了Python 實現(xiàn)一個自動化翻譯和替換的工具,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • Python之多線程爬蟲抓取網頁圖片的示例代碼

    Python之多線程爬蟲抓取網頁圖片的示例代碼

    本篇文章主要介紹了Python之多線程爬蟲抓取網頁圖片的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 使用python從三個角度解決josephus問題的方法

    使用python從三個角度解決josephus問題的方法

    這篇文章主要介紹了使用python從三個角度解決josephus問題的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Python 數據處理更容易的12個輔助函數總結

    Python 數據處理更容易的12個輔助函數總結

    Python的產生似乎就是專門用來處理數據的,順理成章的成為大數據的主流語言,本文介紹十二個函數輔助你更容易更便捷的用Python進行數據處理
    2021-11-11
  • pytorch 禁止/允許計算局部梯度的操作

    pytorch 禁止/允許計算局部梯度的操作

    這篇文章主要介紹了pytorch 禁止/允許計算局部梯度的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 使用Django框架中ORM系統(tǒng)實現(xiàn)對數據庫數據增刪改查

    使用Django框架中ORM系統(tǒng)實現(xiàn)對數據庫數據增刪改查

    這篇文章主要介紹了使用Django的ORM實現(xiàn)對數據庫數據增刪改查方法,文中附含詳細示例代碼以及過程詳解,有需要的朋友可以借鑒參考下
    2021-09-09
  • python+selenium+Chrome options參數的使用

    python+selenium+Chrome options參數的使用

    這篇文章主要介紹了python+selenium+Chrome options參數的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • 基于Opencv制作的美顏相機帶你領略美顏特效的效果

    基于Opencv制作的美顏相機帶你領略美顏特效的效果

    最關于美顏類相機最重要的是第一步:人臉檢測,本篇文章中是采用openCV開源庫實現(xiàn),文中給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值
    2021-09-09
  • Pandas實現(xiàn)列(column)排序的幾種方法

    Pandas實現(xiàn)列(column)排序的幾種方法

    Pandas是一種高效的數據處理庫,在數據處理過程中,咱們經常需要將列按照一定的要求進行排序,本文就來介紹一下Pandas實現(xiàn)列(column)排序的幾種方法,感興趣的可以了解一下
    2023-11-11
  • python初學定義函數

    python初學定義函數

    這篇文章主要為大家介紹了python的定義函數,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助,希望能夠給你帶來幫助
    2021-11-11

最新評論