數(shù)據(jù)處理是數(shù)據(jù)分析的重要組成部分,包括了各種任務(wù),如清理、重組、合并、刪除重復(fù)項(xiàng)、刪除 Null 或 NaN 值等。Pandas 提供了大量的函數(shù)集來(lái)執(zhí)行各種數(shù)據(jù)預(yù)處理任務(wù)。
Pandas 提供了兩種類(lèi)型的數(shù)據(jù)結(jié)構(gòu)來(lái)處理數(shù)據(jù),包括 Series 和 DataFrame。在這篇文章中,我整理了 18 個(gè)我在數(shù)據(jù)預(yù)處理任務(wù)中最常用的函數(shù)。
1)DataFrame.select_dtypes( ):
基于列 dtypes 返回 DataFrame 列的子集。
當(dāng)你想只選擇具有特定數(shù)據(jù)類(lèi)型的列或具有特定數(shù)據(jù)類(lèi)型的值時(shí),例如:“object”,“int64”,np.number 等。
語(yǔ)法:
DataFrame.select_dtypes(include = “reqd dtype”, exclude = “reqd dtype”)
例:
#create DataFrame-----------------df = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'Player': ['A','B' , 'C', 'D', 'E'], 'rebounds': [11, 8, 10, 6, 6]})#checks column datatype--------------------df.info()#selecting reqd datatype----------------------df.select_dtypes(include = 'int64')
輸出:
2)DataFrame.drop_duplicates( ):
從 DataFrame 中刪除重復(fù)的行,通常用于數(shù)據(jù)清理任務(wù)。在數(shù)據(jù)集中保留重復(fù)值會(huì)影響分析結(jié)果,因此數(shù)據(jù)清理對(duì)于避免誤判非常重要。
語(yǔ)法:
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
參數(shù):
subset:僅考慮用于標(biāo)識(shí)重復(fù)項(xiàng)的特定列,默認(rèn)情況下使用所有列。
keep:可以被認(rèn)為是 {'first', 'last',F(xiàn)alse},默認(rèn)情況下會(huì)被認(rèn)為是 False。此參數(shù)用于決定應(yīng)考慮哪些重復(fù)項(xiàng)。如果要保留第一個(gè)出現(xiàn)的值,則 keep='first'或'last',默認(rèn)情況下,如果保留所有重復(fù)項(xiàng),則為 False。
inplace:它決定是處理 DataFrame 中的更改還是返回副本。表示在當(dāng)前 DataFrame 中進(jìn)行更改,并返回副本并保持當(dāng)前 DataFrame 不變。.inplace = True inplace = FalseBy default false
ignore_index: 如果為 True,則生成的軸將標(biāo)記為 0,1, ...,n-1。默認(rèn)情況下 ignore_index = False。
例:
#create DataFrame----------------------------df = pd.DataFrame({'points': [25, 12, 15, 14, 19,25,12,14], 'Player': ['A','B' , 'C', 'D', 'E','A','B','D'], 'rebounds': [11, 8, 10, 6, 6,11,8,6]})#drop duplicates-----------------------------------df = df.drop_duplicates(subset = ['Player'], keep ='first', ignore_index = False)df
輸出:
3)DataFrame.str.lower( ):
將 Series/Index 中的字符串轉(zhuǎn)換為小寫(xiě)。同樣,對(duì)于大寫(xiě),我們可以使用 DataFrame.str.upper() 。
語(yǔ)法:
Series.str.lower()
例:
#create DataFrame--------------------------------df = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'Player': ['ADam','BOB' , 'COT', 'DerrICK','EtHan'], 'Team' : ['a','B','C','d','e'], 'rebounds': [11, 8, 10, 6, 6]})#converting column values of Player and Team into lowercase---------columns = df.select_dtypes(include = 'object')columns = list(columns.columns)for i in columns: df[i] = df[i].str.lower()df
輸出:
4)Series.str.match() :
Series.str.match() 函數(shù)用于確定給定序列對(duì)象中的數(shù)據(jù)是否與正則表達(dá)式匹配。
語(yǔ)法:
Series.str.match(pat, case=True, flags=0, na=None)
參數(shù):
pat:字符序列或正則表達(dá)式。
case:如果為 True,則區(qū)分大小寫(xiě)。默認(rèn)情況下為 True。
flags:int,默認(rèn)值為 0。
na:填充缺失值的值。默認(rèn)值取決于數(shù)組的數(shù)據(jù)類(lèi)型。對(duì)于對(duì)象 dtype,使用 numpy.nan。
例:
city = pd.Series(['Kolkata','Delhi','Mumbai', 'Sikkim','Bangalore'])index = ['City_1','City_2','City_3','City_4','City_5']city.index = indexcity
res = city.str.match(pat = '(Ranchi)|(Mumbai)')res
res = city.str.match(pat = '([A-Z]a.)')res
5)pd.set_option( ):
例:
data = {'Score' : [10, 15, 2, 31, 4, 51, 26, 17, 28, 29], 'Player' : ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']}df = pd.DataFrame(data)df
pd.set_option('display.max_rows', 5)df
pd.set_option( ) can also be used to format high number decimal points/scientific notation to normal notation.
例 :
import numpy as npimport pandas as pddf = pd.DataFrame({ 'Name': ['a', 'b', 'c','d','e','f','g'], 'Value': np.random.rand(7)**3})df
#formatting upto 2 decimal placespd.set_option('display.float_format', lambda x: '%0.2f' % x)df
輸出:
6)df.iteritems( ):
用于迭代(列名、系列)。循環(huán)訪問(wèn) DataFrame 列,返回一個(gè)元組,其中列名和內(nèi)容是一個(gè)序列。該方法生成 DataFrame 的迭代器對(duì)象,允許我們迭代 DataFrame 的每一列。
例:
#create DataFramedf = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'Player': ['Adam','Bob','Cot','Derrick','Ethan'], 'Team' : ['a','B','C','d','e'], 'rebounds': [11, 8, 10, 6, 6]})
迭代列 :
for x, y in df.iteritems(): print(x) print(y)
輸出:
7)df.iterrows( ):
有時(shí)我們需要在不使用循環(huán)的情況下迭代 DataFrame 的行和列,在這種情況 df.iterrows( ) 下非常有用。
以(索引、序列)對(duì)的形式迭代數(shù)據(jù)幀行。
例:
#create DataFramedf = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'Player': ['Adam','Bob','Cot','Derrick','Ethan'], 'Team' : ['a','B','C','d','e'], 'rebounds': [11, 8, 10, 6, 6]})#Iterating over DataFrame rowsfor i in df.iterrows(): print(i)
輸出:
8)df.itertuples( ):
語(yǔ)法:
DataFrame.itertuples(index=True, name='Pandas')
Index = True 默認(rèn)情況下為 name = 'Pandas’
對(duì)于 DataFrame 中的每一行,要在 namedtuples 上迭代的對(duì)象,第一個(gè)字段可能是索引,后面的字段可能是列值。
例:
#create DataFramedf = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'Player': ['Adam','Bob','Cot','Derrick','Ethan'], 'Team' : ['a','B','C','d','e'], 'rebounds': [11, 8, 10, 6, 6]})for row in df.itertuples(): print(row)
輸出:
9)df.reset_index( ):
Pandas 中用于重置 DataFrame 的索引。reset_index() 將從 0 到數(shù)據(jù)長(zhǎng)度的整數(shù)列表設(shè)置為索引。
例:
df = pd.read_csv('customer_data.csv')
將列“Name”設(shè)置為索引:
df.set_index(['Name'], inplace = True)df
重置索引:
df.reset_index()
pandas函數(shù)還有哪些?下期我們繼續(xù)!
聯(lián)系客服