Python 数据操作教程在 PYTHON 中创建虚拟数据_第1页
Python 数据操作教程在 PYTHON 中创建虚拟数据_第2页
Python 数据操作教程在 PYTHON 中创建虚拟数据_第3页
Python 数据操作教程在 PYTHON 中创建虚拟数据_第4页
Python 数据操作教程在 PYTHON 中创建虚拟数据_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

​Pandas是Python中最受欢迎的软件包之一,广泛用于数据操作。它是一个非常强大且用途广泛的软件包,使数据清理和整理变得更加轻松愉快。

Pandas库对Python社区做出了巨大贡献,它使Python成为数据科学和分析领域的顶级编程语言之一。它已成为数据分析师和科学家进行数据分析和操作的首选。

什么是熊猫包?Pandas包具有许多功能,这些功能是数据处理和操作的本质。简而言之,它可以为您执行以下任务——创建类似于R的数据框和Excel电子表格的结构化数据集。从CSV、TXT、XLSX、SQL数据库、R等各种来源读取数据。从数据集中选择特定的行或列按升序或降序排列数据根据某些条件过滤数据按分类变量汇总数据将数据重塑为宽格式或长格式时间序列分析合并和连接两个数据集遍历数据集的行以CSV或Excel格式写入或导出数据数据集:在本教程中,我们将使用两个数据集:'income'和'iris'。'income'data

:该数据包含各米国各州从2002年到2015年的收入。该数据集包含51个观测值和16个变量。\o"下载链接"下载链接'iris'数据:它包含150个观测值和5个变量。我们有3种花(每种50朵花),所有花的萼片长度和宽度以及花瓣长度和宽度都已给出。\o"下载链接"下载链接

要记住的重要熊猫功能以下是常见任务以及pandas函数的列表。公用事业功能提取列名称df.列选择前2行df.iloc[:2]选择前2列df.iloc[:,:2]按名称选择列df.loc[:,["col1","col2"]]选择随机编号

行数df.样本(n=10)选择随机行的分数df.sample(frac=0.2)重命名变量df.重命名()选择一列作为索引df.set_index()删除行或列df.drop()排序值df.sort_values()分组变量df.groupby()过滤df.查询()查找缺失值df.isnull()删除缺失值df.dropna()删除重复项df.drop_duplicates()创建假人pd.get_dummies()排行df.rank()累计金额df.cumsum()分位数df.分位数()选择数值变量df.select_dtypes()连接两个数据帧pd.concat()基于公共变量合并pd.合并()导入熊猫库您需要先导入或加载Pandas库才能使用它。“Importingalibrary”就是把它加载到内存中,然后你就可以使用它了。运行以下代码导入pandas库:importpandasaspd“pd”是别名或缩写,将用作访问或调用pandas函数的快捷方式。要访问pandas库中的函数,您只需在每次需要应用时键入pd.function

而不是

pandas.function。导入数据集要从CSV文件读取或导入数据,可以使用read_csv()函数。在该函数中,您需要指定CSV文件的文件位置。income=pd.read_csv("C:\\Users\\Hp\\Python\\Basics\\income.csv")IndexStateY2002Y2003Y2004Y2005Y2006Y2007\0AAlabama1296530131771111186311492583110740814401341AAlaska1170302196037818180851447852186163914658412AArizona1742027196814013775831782199110256811093823AArkansas1485531199492711192991947979166919118012134CCalifornia168534916758071889570148028017350691812546Y2008Y2009Y2010Y2011Y2012Y2013Y2014Y2015019452291944173123758214407561186741185284115589061916661115518261436541162961612308661512804198530215803941979143217528861554330130052111307091907284136327915258661647724311881041628980166929519282381216675159189613609591329341414873151663809162450916396701921845115653613884611644607获取变量名称通过使用income.columns命令,您可以获取数据框的变量名称。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命令提取数据框中存储的变量类型信息。income.dtypes

IndexobjectStateobjectY2002int64Y2003int64Y2004int64Y2005int64Y2006int64Y2007int64Y2008int64Y2009int64Y2010int64Y2011int64Y2012int64Y2013int64Y2014int64Y2015int64dtype:object这里的“对象”表示字符串或字符变量。'

int64

'指的是数字变量(没有小数)。

要查看一个变量的变量类型(假设为“State”)而不是所有变量,您可以使用以下命令-income['State'].dtypes它返回dtype('O')。在这种情况下,“O”指的是对象,即作为字符的变量类型。更改数据类型Y2008是一个整数。假设我们想将其转换为浮点数(带小数的数字变量),我们可以这样写:income.Y2008=income.Y2008.astype(float)income.dtypesIndexobjectStateobjectY2002int64Y2003int64Y2004int64Y2005int64Y2006int64Y2007int64Y2008float64Y2009int64Y2010int64Y2011int64Y2012int64Y2013int64Y2014int64Y2015int64dtype:object查看数据的维度或形状income.shape(51,16)51是行数,16是列数。

您还可以使用shape[0]查看行数(类似于R中的nrow()),使用shape[1]查看列数(类似于R中的ncol())。

income.shape[0]income.shape[1]仅查看部分行默认情况下,head()显示前5行。如果我们想查看特定行数,可以在括号中提及。同样,tail()函数默认显示最后5行。income.head()income.head(2)#showsfirst2rows.income.tail()income.tail(2)#showslast2rows

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

income.iloc[0:5]定义分类变量就像R中的factors()函数一样,我们可以使用“category”

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

()函数显示数据集中的唯一级别或类别。income.Index.unique()array(['A','C','D',...,'U','V','W'],dtype=object)

nunique

()显示唯一值的数量。income.Index.nunique()它返回19,因为索引列包含不同的19个值。生成交叉表pd.crosstab()用于创建双变量频率分布。这里的双变量频率分布在Index和State列之间。pd.crosstab(income.Index,income.State)创建频率分布income.Index选择“income”数据集的“Index”列,value_counts()创建频率分布。默认情况下ascending=False即它将在顶部显示具有最大频率的“索引”。income.Index.value_counts(ascending=True)F1G1U1L1H1P1R1D2T2S2V2K2O3C3I4W4A4M8N8Name:Index,dtype:int64绘制样品income.sample()用于从包含所有列的数据集中抽取随机样本。这里n=5表示我们需要5列,frac=0.1表示我们需要10%的数据作为样本。income.sample(n=5)income.sample(frac=0.1)仅选择少数列您可以通过多种方式选择特定列。以下两行代码都从收入数据框中选择状态变量。income["State"]income.State要按名称选择多个列,您可以使用以下语法。income[["Index","State","Y2008"]]要仅选择特定的列和行,我们使用loc[]或iloc[]函数。要选择的索引或列作为列表传递。"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的区别loc考虑具有索引中特定标签的行(或列)。而iloc考虑索引中特定位置的行(或列),因此它只需要整数。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重命名变量

我们为人们及其各自的星座信息创建了一个数据框“数据”。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()函数,新名称以字典的形式传递。#Renamingonlysomeofthevariables.data.rename(columns={"Names":"Cust_Name"},inplace=True)Cust_NameZodiacSigns0JohnLibra1MaryCapricorn2JuliaAries3KennyScorpio4HenryAquarius默认情况下,在pandas

inplace=False中,这意味着原始数据集中没有进行任何更改。因此,如果我们希望改变原始数据集,我们需要定义inplace=True。

假设我们只想替换列名列表中的特定字符,那么我们可以使用str.replace()函数。例如,将包含“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')将数据框中的一列设置为索引使用set_index("columnname")我们可以将索引设置为该列并删除该列。income.set_index("Index",inplace=True)income.head()#NotethattheindiceshavechangedandIndexcolumnisnownomoreacolumnincome.columnsincome.reset_index(inplace=True)income.head()reset_index()告诉我们应该使用默认索引。删除列和行要删除列,我们使用drop(),其中第一个参数是要删除的列的列表。

默认情况下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因此不会对原始数据集进行任何更改。axis="columns"和axis="index"表示应分别删除列和行(索引)。排序数据为了对数据进行排序,部署了sort_values()函数。默认情况下inplace=False和ascending=True。income.sort_values("State",ascending=False)income.sort_values("State",ascending=False,inplace=True)income.Y2006.sort_values()

我们已经为Index复制了,因此我们需要首先按Index对数据帧进行排序,然后对于每个特定的索引,我们按Y2002对值进行排序income.sort_values(["Index","Y2002"])

创建新变量可以在数据集中对各种列

使用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上面的命令不起作用,因此要创建新列,我们需要使用方括号。

我们也可以使用assign()函数,但是这个命令不会对原始数据进行更改,因为没有inplace参数。因此我们需要将它保存在一个新的数据集中。data=income.assign(ratio=(income.Y2008/income.Y2009))data.head()查找描述性统计数据describe()用于查找一些统计数据,例如数字变量的平均值、最小值、四分位数等。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']。它将返回总计数、最大出现字符串及其频率income.describe(include=['object'])#Onlyforstrings/objects找出数据框每一列的具体描述性统计income.mean()income.median()income.agg(["mean","median"])agg()使用求和、均值、中值、最小值、最大值等汇总函数执行聚合。

如何为特定列运行函数?income.Y2008.mean()income.Y2008.median()income.Y2008.min()income.loc[:,["Y2002","Y2008"]].max()GroupBy函数为了按分类变量对数据进行分组,我们使用groupby()函数,因此我们可以对每个类别进行操作。income.groupby("Index")["Y2002","Y2003"].min()Y2002Y2003IndexA11703021317711C13438241232844D11114371268673F19646261468852G19290091541565H14615701200280I13532101438538K15090541290700L15847341110625M12213161149931N13951491114500O11739181334639P13201911446723R15017441942942S11590371150689T15205911310777U17710961195861V11343171163996W16773471380662要运行多个汇总函数,我们可以使用agg()用于聚合数据的函数。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中使用的列将成为新数据框中的索引。要禁用它,您可以将其设置为False,它将您在groupby中使用的变量存储在新数据框中的不同列中。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()函数:income.loc[(income.Index=="A")|(income.Index=="W"),:]#Alternatively.income.loc[income.Index.isin(["A","W"]),:]IndexStateY2002Y2003Y2004Y2005Y2006Y2007\0AAlabama1296530131771111186311492583110740814401341AAlaska1170302196037818180851447852186163914658412AArizona1742027196814013775831782199110256811093823AArkansas14855311994927111929919479791669191180121347WWashington19777491687136119949011630921334864162198948WWestVirginia16773471380662117610018889481922085174082649WWisconsin17889201518578128966314368881251678172187450WWyoming177519014980981198212188168817505271523124Y2008Y2009Y2010Y2011Y2012Y2013Y2014Y20150194522919441731237582144075611867411852841155890619166611155182614365411629616123086615128041985302158039419791432175288615543301300521113070919072841363279152586616477243118810416289801669295192823812166751591896136095913293414715456211555554117933111500891775787127383413874281377341481238174153932215396031872519146213716831271204344119879149198016719013941648755194094317291771510119170165018462385015876021504455128214218818141673668199402212040291853858或者,我们可以使用query()函数,它也消除了在提及列时指定数据框的需要,并让您编写我们的过滤条件:income.query('Y2002>1700000&Y2003>1500000')处理缺失值我们创建一个名为“crops”的新数据框,并通过导入numpy使用np.nan

创建一个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()首先对数据帧中的“成本”进行子集化,并返回一个带有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,我们使用子集参数并传递一个列表:crops.dropna(subset=['Yield',"cost"],how='any').shapecrops.dropna(subset=['Yield',"cost"],how='all').shape用列名中的“UNKNOWN”子属性替换缺失值。crops['cost'].fillna(value="UNKNOWN",inplace=True)crops处理重复项我们创建了一个包含项目及其各自价格的新数据框。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'即第一次出现被认为是一个唯一值,它的重复被认为是重复的。

如果keep="last"最后一次出现被认为是一个唯一值,它的所有重复都被认为是重复的。data.loc[data.duplicated(keep="last"),:]#lastentriesarenotthere,indiceshavechanged.如果keep="False"然后它认为重复观察的所有出现都是重复的。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创建假人现在我们将考虑iris数据集。

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()函数用于匹配值并在自动创建的新系列中替换它们。iris["setosa"]=iris.Species.map({"setosa":1,"versicolor":0,"virginica":0})iris.head()要创建假人,使用get_dummies()。iris.Species.prefix="Species"向创建的新系列添加前缀“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()函数,我们可以连接多个系列或数据帧。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”类别的变量,我们创建“n-1”个虚拟变量,因此要删除第一个“虚拟”列,我们编写drop_first=Truepd.get_dummies(iris,columns=["Species"],drop_first=True).head()排行

要创建所有等级的数据框,我们使用rank()iris.rank()

按特定变量排名假设我们想按升序排列不同物种的Sepal.Length:iris['Rank2']=iris['Sepal.Length'].groupby(iris["Species"]).rank(ascending=1)iris.head()计算累计和使用cumsum()函数我们可以获得累积和iris['cum_sum']=iris["Sepal.Length"].cumsum()iris.head()一个变量的累计和为了找到不同物种萼片长度的累积和,我们使用groupby()然后使用cumsum()iris["cumsum2"]=iris.groupby(["Species"])["Sepal.Length"].cumsum()iris.head()计算百分位数。可以使用quantile()获得各种分位数iris.quantile(0.5)iris.quantile([0.1,0.2,0.5])iris.quantile(0.55)否则在Python中我们创建了一个包含学生姓名及其各自星座的新数据框。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中的函数是使用block关键字定义的def

,后跟函数的名称作为块的名称。apply()函数沿着数据帧的行或列应用函数。

Note:如果使用简单的“ifelse”,我们需要注意缩进。Python不涉及循环和ifelse的大括号。输出NamesZodiacSignsflag0JohnAquariusyes1MaryLibrano2HenryGeminiyes3AugustusPiscesno4KennyVirgono或者,通过导入numpy我们可以使用np.where。第一个参数是要评估的条件,第二个参数是条件为True时的值,最后一个参数定义条件评估返回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,我们创建条件列表及其各自的值,并使用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仅选择数字或分类列为了包含数字列,我们使用select_dtypes()

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

_get_numeric_data还提供了仅选择数字列的实用程序。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拼接我们创建了2个包含学生详细信息的数据框: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()函数我们可以加入2个数据帧:data=pd.concat([students,students2])#默认axis=0MarksNamesZodiacSigns0NaNJohnAquarius1NaNMaryLibra2NaNHenryGemini3NaNAugustusPisces4NaNKennyVirgo050.0Jo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论