pandas删除某列有空值的行_Python-零基础学习Pandas知识点整理(2)
DataFrame數(shù)據(jù)的清洗--預(yù)處理操作
import pandas as pd
import numpy as np
#DataFrame數(shù)據(jù)框行或列的刪除
#df.drop(labels=None,axis=0,index=None,columns=None,level=None,inplace=False,error="raise")
#labels 表示需要?jiǎng)h除的行或列的標(biāo)簽,多行或多列用列表傳入數(shù)據(jù) labels=["a","b"]
#axis 表示刪除的是行或列 如果指定了index或columns參數(shù),那么axis可以不傳入。
# index 表示需要?jiǎng)h除的行的索引
# columns 表示需要?jiǎng)h除的列索引
#inplace 傳入bool類型數(shù)據(jù),True表示改變?cè)璂ataFrame,False表示不改變?cè)璂ataFrame
#使用drop刪除行或列時(shí),可以使用條件判斷進(jìn)行刪除。
# df.drop(df[(df["a"]=="5")&(df["b"]==6)]) #表示刪除df中"a"列中值等于5并且"b"列中值等于6的行數(shù)據(jù)(由于沒有指定axis,默認(rèn)為0)
##注釋:df[df["a"]==5] 表示選擇"a"列中值為5對(duì)應(yīng)的行; 先選擇"a"這列,然后選擇"a"列中值等于5的這行.
df[df["b"]==5]
#DataFrame數(shù)據(jù)框數(shù)據(jù)的去重:
df.duplicated(subset=["b","k"]) #默認(rèn)情況下是判斷DataFrame中每行數(shù)據(jù)是否有重復(fù)值,返回bool值的Series;如果傳入?yún)?shù)subset= 表示指定對(duì)應(yīng)的columns,返回的是指定列中是否存在重復(fù)值的行。
#因此duplicated是橫向判斷重復(fù)值,返回對(duì)應(yīng)的Series數(shù)據(jù),在使用是一般是不需要傳入subset參數(shù)的,需要判斷多列是否存在重復(fù)值的行,以列表[] 形式傳入?yún)?shù)。
'''如果指定了某列,則返回某列的布爾值Series。不寫subset參數(shù),則表示對(duì)整個(gè)df進(jìn)行判斷(判斷整個(gè)是否存在完全相同的行,如果存在完全相同的行,則該行顯示True,
如果兩行中的對(duì)應(yīng)的好幾列中有一個(gè)值不同,則表示不是重復(fù),返回False),則返回整個(gè)df的布爾值Series(也是按一列布爾值輸出)'''
df.drop_duplicates() #默認(rèn)情況下對(duì)特定的列進(jìn)行去重,也就是去除指定列中含有重復(fù)值的行。
#Df.drop_duplicates(subset=None,keep="first",inplace=False)
'''Subset= " " #用來指定特定的列,默認(rèn)是所有列。通俗來講就是指定某列,需要?jiǎng)h除某列中含有重復(fù)的數(shù)據(jù),如果有重復(fù)數(shù)據(jù),則所在重復(fù)數(shù)據(jù)的整行會(huì)被直接刪除,相當(dāng)與是跨行操作。如果SubSet=["A","B"],也就是A和B列對(duì)應(yīng)位置的值相同時(shí)才被刪除該行,不相同的話就算A中有再多的重復(fù)值都不會(huì)被刪除。
Keep="first" 保留第一次出現(xiàn)的值,"last" 保留最后一次出現(xiàn)的值
Inplace=True /False 是否替換原來的df,默認(rèn)為False,即不替換。'''
#DataFrame中缺失值的判斷 isna() / isnull(),notnull()
df1.isna() #判斷df中是否存在缺失值,返回與df相同的布爾類型的DataFrame
df1.isnull() #判斷df1中是否存在缺失值。與isna()作用相同。 由于是對(duì)每個(gè)位置的元素進(jìn)行判斷,因此返回和原來相同的DataFrame布爾值。
#DataFrame缺失值填充fillna()
#df.fillna(value=None,method=None,axis=None,inplace=False,limit=None,downcast=None) #對(duì)df中的缺失值進(jìn)行填充指定的值,method與value不能共存。
# '''value 表示需要用于填充缺失值的值??梢酝ㄟ^字典的方式對(duì)不同列的空值填充不同的值,例如:df.fillna({"A":0,"B":1,"C":3} "A"列中的空值填充為0;"B"列的空值填充為1;"C"列中的空值填充為3.
# axis 表示填充的維度,是按照行填充還是按照列進(jìn)行填充。
# method 表示填充的方法,ffill:用缺失值前面的一個(gè)值代替缺失值,如果axis =1,那么就是橫向的前面的值替換后面的缺失值,如果axis=0,那么則是上面的值替換下面的缺失值。backfill/bfill,缺失值后面的一個(gè)值代替前面的缺失值。注意這個(gè)參數(shù)不能與value同時(shí)出現(xiàn)
# limit 表示確定填充的個(gè)數(shù),例如limit=3 表示只填充df中的兩個(gè)空值。
# inplace 布爾類型,是否改變?cè)璬f。'''
#DataFrame值的替換 replace()
#df.replace(to_replace=None,value=None,inplace=False,limit=None,regex=False,method="pad",axis=None)
#簡(jiǎn)單的理解就是需要在df中的某個(gè)值替換成另一個(gè)值。
# to_replace : 需要被替換的值,可以通過字典來指定將多個(gè)值分別進(jìn)行替換,作用與Series中replace相同。
# value : 用該值來替換to_replace的值。
'''
df.replace({"A":3,"B":"小明"},20) #表示將df的"A"列中對(duì)應(yīng)的3和“B”列中對(duì)應(yīng)的"小明",用20來進(jìn)行替換。
df.replace(3,"A") #表示將df中value值中存在的3,全部替換成"A"。
df["年齡"].replace(3,"A") #表示只將df中"年齡"對(duì)應(yīng)列中的3,替換成 "A",其他地方的3不會(huì)改變。'''
#DataFrame的分組操作 groupby() 返回的是分組后的groupby數(shù)據(jù)類型。
#df.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=<object>,observed=False,dropna=True) #進(jìn)行數(shù)據(jù)分組,以及進(jìn)行組內(nèi)運(yùn)算.
# by : 表示需要分組的列。
#axis : 表示是按照行分組還是按照列進(jìn)行分組。
df["b"].groupby(by=df["k"]).count() #表示按照df中"a"列數(shù)據(jù)進(jìn)行分組,并統(tǒng)計(jì)個(gè)分組后的數(shù)據(jù)的個(gè)數(shù)。
df.groupby(by=df["k"]).count() #表示將df按照"k"列進(jìn)行分組,返回k列中元素分組后的個(gè)數(shù),df有多少列,就返回多少列,值都是一樣的。因此可以通過如下選擇其中需要的列即可:
df.groupby(by=df["b"])["d"].count() #返回分組后d列對(duì)應(yīng)的元素個(gè)數(shù)返回值。
【內(nèi)容持續(xù)更新... 如果覺得對(duì)你有幫助,幫忙點(diǎn)個(gè)收藏和關(guān)注,謝謝!】
總結(jié)
以上是生活随笔為你收集整理的pandas删除某列有空值的行_Python-零基础学习Pandas知识点整理(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在linux里面运行ncl,NCL基
- 下一篇: JAVA 基础练习题