Python 數(shù)據(jù)操作教程在 PYTHON 中創(chuàng)建虛擬數(shù)據(jù)_第1頁
Python 數(shù)據(jù)操作教程在 PYTHON 中創(chuàng)建虛擬數(shù)據(jù)_第2頁
Python 數(shù)據(jù)操作教程在 PYTHON 中創(chuàng)建虛擬數(shù)據(jù)_第3頁
Python 數(shù)據(jù)操作教程在 PYTHON 中創(chuàng)建虛擬數(shù)據(jù)_第4頁
Python 數(shù)據(jù)操作教程在 PYTHON 中創(chuàng)建虛擬數(shù)據(jù)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

?Pandas是Python中最受歡迎的軟件包之一,廣泛用于數(shù)據(jù)操作。它是一個非常強大且用途廣泛的軟件包,使數(shù)據(jù)清理和整理變得更加輕松愉快。

Pandas庫對Python社區(qū)做出了巨大貢獻,它使Python成為數(shù)據(jù)科學和分析領域的頂級編程語言之一。它已成為數(shù)據(jù)分析師和科學家進行數(shù)據(jù)分析和操作的首選。

什么是熊貓包?Pandas包具有許多功能,這些功能是數(shù)據(jù)處理和操作的本質。簡而言之,它可以為您執(zhí)行以下任務——創(chuàng)建類似于R的數(shù)據(jù)框和Excel電子表格的結構化數(shù)據(jù)集。從CSV、TXT、XLSX、SQL數(shù)據(jù)庫、R等各種來源讀取數(shù)據(jù)。從數(shù)據(jù)集中選擇特定的行或列按升序或降序排列數(shù)據(jù)根據(jù)某些條件過濾數(shù)據(jù)按分類變量匯總數(shù)據(jù)將數(shù)據(jù)重塑為寬格式或長格式時間序列分析合并和連接兩個數(shù)據(jù)集遍歷數(shù)據(jù)集的行以CSV或Excel格式寫入或導出數(shù)據(jù)數(shù)據(jù)集:在本教程中,我們將使用兩個數(shù)據(jù)集:'income'和'iris'。'income'data

:該數(shù)據(jù)包含各米國各州從2002年到2015年的收入。該數(shù)據(jù)集包含51個觀測值和16個變量。\o"下載鏈接"下載鏈接'iris'數(shù)據(jù):它包含150個觀測值和5個變量。我們有3種花(每種50朵花),所有花的萼片長度和寬度以及花瓣長度和寬度都已給出。\o"下載鏈接"下載鏈接

要記住的重要熊貓功能以下是常見任務以及pandas函數(shù)的列表。公用事業(yè)功能提取列名稱df.列選擇前2行df.iloc[:2]選擇前2列df.iloc[:,:2]按名稱選擇列df.loc[:,["col1","col2"]]選擇隨機編號

行數(shù)df.樣本(n=10)選擇隨機行的分數(shù)df.sample(frac=0.2)重命名變量df.重命名()選擇一列作為索引df.set_index()刪除行或列df.drop()排序值df.sort_values()分組變量df.groupby()過濾df.查詢()查找缺失值df.isnull()刪除缺失值df.dropna()刪除重復項df.drop_duplicates()創(chuàng)建假人pd.get_dummies()排行df.rank()累計金額df.cumsum()分位數(shù)df.分位數(shù)()選擇數(shù)值變量df.select_dtypes()連接兩個數(shù)據(jù)幀pd.concat()基于公共變量合并pd.合并()導入熊貓庫您需要先導入或加載Pandas庫才能使用它。“Importingalibrary”就是把它加載到內存中,然后你就可以使用它了。運行以下代碼導入pandas庫:importpandasaspd“pd”是別名或縮寫,將用作訪問或調用pandas函數(shù)的快捷方式。要訪問pandas庫中的函數(shù),您只需在每次需要應用時鍵入pd.function

而不是

pandas.function。導入數(shù)據(jù)集要從CSV文件讀取或導入數(shù)據(jù),可以使用read_csv()函數(shù)。在該函數(shù)中,您需要指定CSV文件的文件位置。income=pd.read_csv("C:\\Users\\Hp\\Python\\Basics\\income.csv")IndexStateY2002Y2003Y2004Y2005Y2006Y2007\0AAlabama1296530131771111186311492583110740814401341AAlaska1170302196037818180851447852186163914658412AArizona1742027196814013775831782199110256811093823AArkansas1485531199492711192991947979166919118012134CCalifornia168534916758071889570148028017350691812546Y2008Y2009Y2010Y2011Y2012Y2013Y2014Y2015019452291944173123758214407561186741185284115589061916661115518261436541162961612308661512804198530215803941979143217528861554330130052111307091907284136327915258661647724311881041628980166929519282381216675159189613609591329341414873151663809162450916396701921845115653613884611644607獲取變量名稱通過使用income.columns命令,您可以獲取數(shù)據(jù)框的變量名稱。Index(['Index','State','Y2002','Y2003','Y2004','Y2005','Y2006','Y2007','Y2008','Y2009','Y2010','Y2011','Y2012','Y2013','Y2014','Y2015'],dtype='object')income.columns[0:2]返回前兩列名稱“Index”、“State”。在python中,索引從0開始。了解變量類型您可以使用dataFrameName.dtypes命令提取數(shù)據(jù)框中存儲的變量類型信息。income.dtypes

IndexobjectStateobjectY2002int64Y2003int64Y2004int64Y2005int64Y2006int64Y2007int64Y2008int64Y2009int64Y2010int64Y2011int64Y2012int64Y2013int64Y2014int64Y2015int64dtype:object這里的“對象”表示字符串或字符變量。'

int64

'指的是數(shù)字變量(沒有小數(shù))。

要查看一個變量的變量類型(假設為“State”)而不是所有變量,您可以使用以下命令-income['State'].dtypes它返回dtype('O')。在這種情況下,“O”指的是對象,即作為字符的變量類型。更改數(shù)據(jù)類型Y2008是一個整數(shù)。假設我們想將其轉換為浮點數(shù)(帶小數(shù)的數(shù)字變量),我們可以這樣寫:income.Y2008=income.Y2008.astype(float)income.dtypesIndexobjectStateobjectY2002int64Y2003int64Y2004int64Y2005int64Y2006int64Y2007int64Y2008float64Y2009int64Y2010int64Y2011int64Y2012int64Y2013int64Y2014int64Y2015int64dtype:object查看數(shù)據(jù)的維度或形狀income.shape(51,16)51是行數(shù),16是列數(shù)。

您還可以使用shape[0]查看行數(shù)(類似于R中的nrow()),使用shape[1]查看列數(shù)(類似于R中的ncol())。

income.shape[0]income.shape[1]僅查看部分行默認情況下,head()顯示前5行。如果我們想查看特定行數(shù),可以在括號中提及。同樣,tail()函數(shù)默認顯示最后5行。income.head()income.head(2)#showsfirst2rows.income.tail()income.tail(2)#showslast2rows

或者,可以使用以下任何命令來獲取前五行。income[0:5]

income.iloc[0:5]定義分類變量就像R中的factors()函數(shù)一樣,我們可以使用“category”

dtype在python中包含分類變量。s=pd.Series([1,2,3,1,2],dtype="category")s0112233142dtype:categoryCategories(3,int64):[1,2,3]提取唯一值unique

()函數(shù)顯示數(shù)據(jù)集中的唯一級別或類別。income.Index.unique()array(['A','C','D',...,'U','V','W'],dtype=object)

nunique

()顯示唯一值的數(shù)量。income.Index.nunique()它返回19,因為索引列包含不同的19個值。生成交叉表pd.crosstab()用于創(chuàng)建雙變量頻率分布。這里的雙變量頻率分布在Index和State列之間。pd.crosstab(income.Index,income.State)創(chuàng)建頻率分布income.Index選擇“income”數(shù)據(jù)集的“Index”列,value_counts()創(chuàng)建頻率分布。默認情況下ascending=False即它將在頂部顯示具有最大頻率的“索引”。income.Index.value_counts(ascending=True)F1G1U1L1H1P1R1D2T2S2V2K2O3C3I4W4A4M8N8Name:Index,dtype:int64繪制樣品income.sample()用于從包含所有列的數(shù)據(jù)集中抽取隨機樣本。這里n=5表示我們需要5列,frac=0.1表示我們需要10%的數(shù)據(jù)作為樣本。income.sample(n=5)income.sample(frac=0.1)僅選擇少數(shù)列您可以通過多種方式選擇特定列。以下兩行代碼都從收入數(shù)據(jù)框中選擇狀態(tài)變量。income["State"]income.State要按名稱選擇多個列,您可以使用以下語法。income[["Index","State","Y2008"]]要僅選擇特定的列和行,我們使用loc[]或iloc[]函數(shù)。要選擇的索引或列作為列表傳遞。"Index":"Y2008"表示選擇Index到Y2008的所有列。df.loc[]的語法df.loc[row_index,column_index]income.loc[:,["Index","State","Y2008"]]income.loc[0:2,["Index","State","Y2008"]]

#SelectingrowswithIndexlabel0to2&columnsincome.loc[:,"Index":"Y2008"]

#Selectingconsecutivecolumns#IntheabovecommandbothIndexandY2008areincluded.income.iloc[:,0:5]

#Columnsfrom1to5areincluded.6thcolumnnotincludedloc和iloc的區(qū)別loc考慮具有索引中特定標簽的行(或列)。而iloc考慮索引中特定位置的行(或列),因此它只需要整數(shù)。x=pd.DataFrame({"var1":np.arange(1,20,2)},index=[9,8,7,6,10,1,2,3,4,5])var191837567109111213315417519定位碼x.loc[:3]Output:var191837567109111213315代碼本地代碼x.iloc[:3]Output:var1918375重命名變量

我們?yōu)槿藗兗捌涓髯缘男亲畔?chuàng)建了一個數(shù)據(jù)框“數(shù)據(jù)”。data=pd.DataFrame({"A":["John","Mary","Julia","Kenny","Henry"],"B":["Libra","Capricorn","Aries","Scorpio","Aquarius"]})data

AB0JohnLibra1MaryCapricorn2JuliaAries3KennyScorpio4HenryAquarius如果要重命名所有列,那么我們可以使用data.columns并分配新列名列表。#Renamingallthevariables.data.columns=['Names','ZodiacSigns']NamesZodiacSigns0JohnLibra1MaryCapricorn2JuliaAries3KennyScorpio4HenryAquarius如果只有一些變量要重命名,那么我們可以使用rename()函數(shù),新名稱以字典的形式傳遞。#Renamingonlysomeofthevariables.data.rename(columns={"Names":"Cust_Name"},inplace=True)Cust_NameZodiacSigns0JohnLibra1MaryCapricorn2JuliaAries3KennyScorpio4HenryAquarius默認情況下,在pandas

inplace=False中,這意味著原始數(shù)據(jù)集中沒有進行任何更改。因此,如果我們希望改變原始數(shù)據(jù)集,我們需要定義inplace=True。

假設我們只想替換列名列表中的特定字符,那么我們可以使用str.replace()函數(shù)。例如,將包含“Y”的變量重命名為“Year”income.columns=income.columns.str.replace('Y','Year')income.columnsIndex(['Index','State','Year2002','Year2003','Year2004','Year2005','Year2006','Year2007','Year2008','Year2009','Year2010','Year2011','Year2012','Year2013','Year2014','Year2015'],dtype='object')將數(shù)據(jù)框中的一列設置為索引使用set_index("columnname")我們可以將索引設置為該列并刪除該列。income.set_index("Index",inplace=True)income.head()#NotethattheindiceshavechangedandIndexcolumnisnownomoreacolumnincome.columnsincome.reset_index(inplace=True)income.head()reset_index()告訴我們應該使用默認索引。刪除列和行要刪除列,我們使用drop(),其中第一個參數(shù)是要刪除的列的列表。

默認情況下axis=0,這意味著操作應該水平、按行進行。要刪除列,我們需要設置axis=1.income.drop('Index',axis=1)#Alternativelyincome.drop("Index",axis="columns")income.drop(['Index','State'],axis=1)income.drop(0,axis=0)income.drop(0,axis="index")income.drop([0,1,2,3],axis=0)

默認情況下inplace=False因此不會對原始數(shù)據(jù)集進行任何更改。axis="columns"和axis="index"表示應分別刪除列和行(索引)。排序數(shù)據(jù)為了對數(shù)據(jù)進行排序,部署了sort_values()函數(shù)。默認情況下inplace=False和ascending=True。income.sort_values("State",ascending=False)income.sort_values("State",ascending=False,inplace=True)income.Y2006.sort_values()

我們已經為Index復制了,因此我們需要首先按Index對數(shù)據(jù)幀進行排序,然后對于每個特定的索引,我們按Y2002對值進行排序income.sort_values(["Index","Y2002"])

創(chuàng)建新變量可以在數(shù)據(jù)集中對各種列

使用eval()算術運算。income["difference"]=income.Y2008-income.Y2009#Alternativelyincome["difference2"]=income.eval("Y2008-Y2009")income.head()IndexStateY2002Y2003Y2004Y2005Y2006Y2007\0AAlabama1296530131771111186311492583110740814401341AAlaska1170302196037818180851447852186163914658412AArizona1742027196814013775831782199110256811093823AArkansas1485531199492711192991947979166919118012134CCalifornia168534916758071889570148028017350691812546Y2008Y2009Y2010Y2011Y2012Y2013Y2014Y2015\01945229.0194417312375821440756118674118528411558906191666111551826.0143654116296161230866151280419853021580394197914321752886.0155433013005211130709190728413632791525866164772431188104.0162898016692951928238121667515918961360959132934141487315.01663809162450916396701921845115653613884611644607differencedifference201056.01056.01115285.0115285.02198556.0198556.03-440876.0-440876.04-176494.0-176494.0income.ratio=income.Y2008/income.Y2009上面的命令不起作用,因此要創(chuàng)建新列,我們需要使用方括號。

我們也可以使用assign()函數(shù),但是這個命令不會對原始數(shù)據(jù)進行更改,因為沒有inplace參數(shù)。因此我們需要將它保存在一個新的數(shù)據(jù)集中。data=income.assign(ratio=(income.Y2008/income.Y2009))data.head()查找描述性統(tǒng)計數(shù)據(jù)describe()用于查找一些統(tǒng)計數(shù)據(jù),例如數(shù)字變量的平均值、最小值、四分位數(shù)等。income.describe()#fornumericvariablesY2002Y2003Y2004Y2005Y2006\count5.100000e+015.100000e+015.100000e+015.100000e+015.100000e+01mean1.566034e+061.509193e+061.540555e+061.522064e+061.530969e+06std2.464425e+052.641092e+052.813872e+052.671748e+052.505603e+05min1.111437e+061.110625e+061.118631e+061.122030e+061.102568e+0625%1.374180e+061.292390e+061.268292e+061.267340e+061.337236e+0650%1.584734e+061.485909e+061.522230e+061.480280e+061.531641e+0675%1.776054e+061.686698e+061.808109e+061.778170e+061.732259e+06max1.983285e+061.994927e+061.979395e+061.990062e+061.985692e+06Y2007Y2008Y2009Y2010Y2011\count5.100000e+015.100000e+015.100000e+015.100000e+015.100000e+01mean1.553219e+061.538398e+061.658519e+061.504108e+061.574968e+06std2.539575e+052.958132e+052.361854e+052.400771e+052.657216e+05min1.109382e+061.112765e+061.116168e+061.103794e+061.116203e+0625%1.322419e+061.254244e+061.553958e+061.328439e+061.371730e+0650%1.563062e+061.545621e+061.658551e+061.498662e+061.575533e+0675%1.780589e+061.779538e+061.857746e+061.639186e+061.807766e+06max1.983568e+061.990431e+061.993136e+061.999102e+061.992996e+06Y2012Y2013Y2014Y2015count5.100000e+015.100000e+015.100000e+015.100000e+01mean1.591135e+061.530078e+061.583360e+061.588297e+06std2.837675e+052.827299e+052.601554e+052.743807e+05min1.108281e+061.100990e+061.110394e+061.110655e+0625%1.360654e+061.285738e+061.385703e+061.372523e+0650%1.643855e+061.531212e+061.580394e+061.627508e+0675%1.866322e+061.725377e+061.791594e+061.848316e+06max1.988270e+061.994022e+061.990412e+061.996005e+06對于字符或字符串變量,您可以編寫include=['object']。它將返回總計數(shù)、最大出現(xiàn)字符串及其頻率income.describe(include=['object'])#Onlyforstrings/objects找出數(shù)據(jù)框每一列的具體描述性統(tǒng)計income.mean()income.median()income.agg(["mean","median"])agg()使用求和、均值、中值、最小值、最大值等匯總函數(shù)執(zhí)行聚合。

如何為特定列運行函數(shù)?income.Y2008.mean()income.Y2008.median()income.Y2008.min()income.loc[:,["Y2002","Y2008"]].max()GroupBy函數(shù)為了按分類變量對數(shù)據(jù)進行分組,我們使用groupby()函數(shù),因此我們可以對每個類別進行操作。income.groupby("Index")["Y2002","Y2003"].min()Y2002Y2003IndexA11703021317711C13438241232844D11114371268673F19646261468852G19290091541565H14615701200280I13532101438538K15090541290700L15847341110625M12213161149931N13951491114500O11739181334639P13201911446723R15017441942942S11590371150689T15205911310777U17710961195861V11343171163996W16773471380662要運行多個匯總函數(shù),我們可以使用agg()用于聚合數(shù)據(jù)的函數(shù)。income.groupby("Index")["Y2002","Y2003"].agg(["min","max","mean"])以下命令查找Y2002的最小值和最大值以及Y2003的平均值income.groupby("Index").agg({"Y2002":["min","max"],"Y2003":"mean"})Y2002Y2003minmaxmeanIndexA117030217420271810289.000C134382416853491595708.000D111143713304031631207.000F196462619646261468852.000G192900919290091541565.000H146157014615701200280.000I135321017769181536164.500K150905418138781369773.000L158473415847341110625.000M122131619832851535717.625N139514918850811382499.625O117391818021321569934.000P132019113201911446723.000R150174415017441942942.000S115903716315221477072.000T152059118118671398343.000U177109617710961195861.000V113431711469021498122.500W167734719777491521118.500為了rename之后的列groupby,您可以使用元組。請參閱下面的代碼。income.groupby("Index").agg({"Y2002":[("Y2002_min","min"),("Y2002_max","max")],"Y2003":[("Y2003_mean","mean")]})重命名列也可以通過以下方法完成。dt=income.groupby("Index").agg({"Y2002":["min","max"],"Y2003":"mean"})dt.columns=['Y2002_min','Y2002_max','Y2003_mean']Groupby超過1列income.groupby(["Index","State"]).agg({"Y2002":["min","max"],"Y2003":"mean"})默認情況下,選項as_index=True在groupby中啟用,這意味著您在groupby中使用的列將成為新數(shù)據(jù)框中的索引。要禁用它,您可以將其設置為False,它將您在groupby中使用的變量存儲在新數(shù)據(jù)框中的不同列中。dt=income.groupby(["Index","State"],as_index=False)["Y2002","Y2003"].min()過濾要僅過濾索引為“A”的那些行,我們編寫:income[income.Index=="A"]#Alternativelyincome.loc[income.Index=="A",:]IndexStateY2002Y2003Y2004Y2005Y2006Y2007\0AAlabama1296530131771111186311492583110740814401341AAlaska1170302196037818180851447852186163914658412AArizona1742027196814013775831782199110256811093823AArkansas148553119949271119299194797916691911801213Y2008Y2009Y2010Y2011Y2012Y2013Y2014Y2015019452291944173123758214407561186741185284115589061916661115518261436541162961612308661512804198530215803941979143217528861554330130052111307091907284136327915258661647724311881041628980166929519282381216675159189613609591329341要選擇索引為“A”的州:income.loc[income.Index=="A","State"]income.loc[income.Index=="A",:].State過濾索引為“A”且收入為2002>1500000的行income.loc[(income.Index=="A")&(income.Y2002>1500000),:]要過濾索引為“A”或“W”的行,我們可以使用isin()函數(shù):income.loc[(income.Index=="A")|(income.Index=="W"),:]#Alternatively.income.loc[income.Index.isin(["A","W"]),:]IndexStateY2002Y2003Y2004Y2005Y2006Y2007\0AAlabama1296530131771111186311492583110740814401341AAlaska1170302196037818180851447852186163914658412AArizona1742027196814013775831782199110256811093823AArkansas14855311994927111929919479791669191180121347WWashington19777491687136119949011630921334864162198948WWestVirginia16773471380662117610018889481922085174082649WWisconsin17889201518578128966314368881251678172187450WWyoming177519014980981198212188168817505271523124Y2008Y2009Y2010Y2011Y2012Y2013Y2014Y20150194522919441731237582144075611867411852841155890619166611155182614365411629616123086615128041985302158039419791432175288615543301300521113070919072841363279152586616477243118810416289801669295192823812166751591896136095913293414715456211555554117933111500891775787127383413874281377341481238174153932215396031872519146213716831271204344119879149198016719013941648755194094317291771510119170165018462385015876021504455128214218818141673668199402212040291853858或者,我們可以使用query()函數(shù),它也消除了在提及列時指定數(shù)據(jù)框的需要,并讓您編寫我們的過濾條件:income.query('Y2002>1700000&Y2003>1500000')處理缺失值我們創(chuàng)建一個名為“crops”的新數(shù)據(jù)框,并通過導入numpy使用np.nan

創(chuàng)建一個NaN值。importnumpyasnpmydata={'Crop':['Rice','Wheat','Barley','Maize'],

'Yield':[1010,1025.2,1404.2,1251.7],

'cost':[102,np.nan,20,68]}crops=pd.DataFrame(mydata)crops如果值為NaN,isnull()返回True,而notnull()返回False。crops.isnull()

#sameasis.nainRcrops.notnull()

#oppositeofpreviouscommand.crops.isnull().sum()

#No.ofmissingvalues.crops.cost.isnull()首先對數(shù)據(jù)幀中的“成本”進行子集化,并返回一個帶有isnull()的邏輯向量crops[crops.cost.isnull()]#showstherowswithNAs.crops[crops.cost.isnull()].Crop#showstherowswithNAsincrops.Cropcrops[crops.cost.notnull()].Crop#showstherowswithoutNAsincrops.Crop要刪除任何行中包含缺失值的所有行,我們使用dropna(how="any")。默認情況下inplace=False。如果how="all"表示如果該行中的所有元素都丟失則刪除該行crops.dropna(how="any").shapecrops.dropna(how="all").shape

如果缺少“產量”或“成本”中的任何一個,要刪除NaN,我們使用子集參數(shù)并傳遞一個列表:crops.dropna(subset=['Yield',"cost"],how='any').shapecrops.dropna(subset=['Yield',"cost"],how='all').shape用列名中的“UNKNOWN”子屬性替換缺失值。crops['cost'].fillna(value="UNKNOWN",inplace=True)crops處理重復項我們創(chuàng)建了一個包含項目及其各自價格的新數(shù)據(jù)框。data=pd.DataFrame({"Items":["TV","WashingMachine","Mobile","TV","TV","WashingMachine"],"Price":[10000,50000,20000,10000,10000,40000]})dataItemsPrice0TV100001WashingMachine500002Mobile200003TV100004TV100005WashingMachine40000duplicated()返回一個邏輯向量,當遇到duplicated時返回True。data.loc[data.duplicated(),:]data.loc[data.duplicated(keep="first"),:]默認情況下keep='first'即第一次出現(xiàn)被認為是一個唯一值,它的重復被認為是重復的。

如果keep="last"最后一次出現(xiàn)被認為是一個唯一值,它的所有重復都被認為是重復的。data.loc[data.duplicated(keep="last"),:]#lastentriesarenotthere,indiceshavechanged.如果keep="False"然后它認為重復觀察的所有出現(xiàn)都是重復的。data.loc[data.duplicated(keep=False),:]

#alltheduplicates,includinguniqueareshown.要刪除重復項,drop_duplicates與默認inplace=False一起使用,

keep='first'or'last'or'False'具有與duplicated()中的相應含義data.drop_duplicates(keep="first")data.drop_duplicates(keep="last")data.drop_duplicates(keep=False,inplace=True)

#bydefaultinplace=False創(chuàng)建假人現(xiàn)在我們將考慮iris數(shù)據(jù)集。

iris=pd.read_csv("C:\\Users\\Hp\\Desktop\\work\\Python\\Basics\\pandas\\iris.csv")iris.head()Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies05.13.51.40.2setosa14.93.01.40.2setosa24.73.21.30.2setosa34.63.11.50.2setosa45.03.61.40.2setosamap()函數(shù)用于匹配值并在自動創(chuàng)建的新系列中替換它們。iris["setosa"]=iris.Species.map({"setosa":1,"versicolor":0,"virginica":0})iris.head()要創(chuàng)建假人,使用get_dummies()。iris.Species.prefix="Species"向創(chuàng)建的新系列添加前綴“Species”。pd.get_dummies(iris.Species,prefix="Species")pd.get_dummies(iris.Species,prefix="Species").iloc[:,0:1]

#1isnotincludedspecies_dummies=pd.get_dummies(iris.Species,prefix="Species").iloc[:,0:]使用concat()函數(shù),我們可以連接多個系列或數(shù)據(jù)幀。axis=1表示它們應該按列連接。iris=pd.concat([iris,species_dummies],axis=1)iris.head()Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies\05.13.51.40.2setosa14.93.01.40.2setosa24.73.21.30.2setosa34.63.11.50.2setosa45.03.61.40.2setosaSpecies_setosaSpecies_versicolorSpecies_virginica01001100210031004100通常,對于具有“n”類別的變量,我們創(chuàng)建“n-1”個虛擬變量,因此要刪除第一個“虛擬”列,我們編寫drop_first=Truepd.get_dummies(iris,columns=["Species"],drop_first=True).head()排行

要創(chuàng)建所有等級的數(shù)據(jù)框,我們使用rank()iris.rank()

按特定變量排名假設我們想按升序排列不同物種的Sepal.Length:iris['Rank2']=iris['Sepal.Length'].groupby(iris["Species"]).rank(ascending=1)iris.head()計算累計和使用cumsum()函數(shù)我們可以獲得累積和iris['cum_sum']=iris["Sepal.Length"].cumsum()iris.head()一個變量的累計和為了找到不同物種萼片長度的累積和,我們使用groupby()然后使用cumsum()iris["cumsum2"]=iris.groupby(["Species"])["Sepal.Length"].cumsum()iris.head()計算百分位數(shù)??梢允褂胵uantile()獲得各種分位數(shù)iris.quantile(0.5)iris.quantile([0.1,0.2,0.5])iris.quantile(0.55)否則在Python中我們創(chuàng)建了一個包含學生姓名及其各自星座的新數(shù)據(jù)框。students=pd.DataFrame({'Names':['John','Mary','Henry','Augustus','Kenny'],

'ZodiacSigns':['Aquarius','Libra','Gemini','Pisces','Virgo']})defname(row):ifrow["Names"]in["John","Henry"]:return"yes"else:return"no"students['flag']=students.apply(name,axis=1)studentspython中的函數(shù)是使用block關鍵字定義的def

,后跟函數(shù)的名稱作為塊的名稱。apply()函數(shù)沿著數(shù)據(jù)幀的行或列應用函數(shù)。

Note:如果使用簡單的“ifelse”,我們需要注意縮進。Python不涉及循環(huán)和ifelse的大括號。輸出NamesZodiacSignsflag0JohnAquariusyes1MaryLibrano2HenryGeminiyes3AugustusPiscesno4KennyVirgono或者,通過導入numpy我們可以使用np.where。第一個參數(shù)是要評估的條件,第二個參數(shù)是條件為True時的值,最后一個參數(shù)定義條件評估返回False時的值。importnumpyasnpstudents['flag']=np.where(students['Names'].isin(['John','Henry']),'yes','no')students多個條件:IfElse-ifElsedefmname(row):ifrow["Names"]=="John"androw["ZodiacSigns"]=="Aquarius":return"yellow"elifrow["Names"]=="Mary"androw["ZodiacSigns"]=="Libra":return"blue"elifrow["ZodiacSigns"]=="Pisces":return"blue"else:return"black"students['color']=students.apply(mname,axis=1)students如果評估為True,我們創(chuàng)建條件列表及其各自的值,并使用np.select,其中默認值是所有條件為False時的值conditions=[

(students['Names']=='John')&(students['ZodiacSigns']=='Aquarius'),

(students['Names']=='Mary')&(students['ZodiacSigns']=='Libra'),

(students['ZodiacSigns']=='Pisces')]choices=['yellow','blue','purple']students['color']=np.select(conditions,choices,default='black')studentsNamesZodiacSignsflagcolor0JohnAquariusyesyellow1MaryLibranoblue2HenryGeminiyesblack3AugustusPiscesnopurple4KennyVirgonoblack僅選擇數(shù)字或分類列為了包含數(shù)字列,我們使用select_dtypes()

data1=iris.select_dtypes(include=[np.number])data1.head()

_get_numeric_data還提供了僅選擇數(shù)字列的實用程序。data3=iris._get_numeric_data()data3.head(3)Sepal.LengthSepal.WidthPetal.LengthPetal.Widthcum_sumcumsum205.13.51.40.25.15.114.93.01.40.210.010.024.73.21.30.214.714.7用于選擇分類變量data4=iris.select_dtypes(include=['object'])data4.head(2)Species0setosa1setosa拼接我們創(chuàng)建了2個包含學生詳細信息的數(shù)據(jù)框:students=pd.DataFrame({'Names':['John','Mary','Henry','Augustus','Kenny'],

'ZodiacSigns':['Aquarius','Libra','Gemini','Pisces','Virgo']})students2=pd.DataFrame({'Names':['John','Mary','Henry','Augustus','Kenny'],

'Marks':[50,81,98,25,35]})

使用pd.concat()函數(shù)我們可以加入2個數(shù)據(jù)幀:data=pd.concat([students,students2])#默認axis=0MarksNamesZodiacSigns0NaNJohnAquarius1NaNMaryLibra2NaNHenryGemini3NaNAugustusPisces4NaNKennyVirgo050.0Jo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論