本文涉及到pandas最常用的36个函数,通过这些函数来介绍如何完成数据的生成和导入、数据清洗、预处理,以及最常用的数据分类、数据最常见的操作,例如过滤、小计和旋转。生成数据表常见的数据表生成方式有两种,第一种是导入外部数据,第二种是直接写入数据。Excel中的“文件”菜单提供了获取外部数据的功能,支持数据库、文本文件、页面等多种数据源的导入。Python支持从多种类型的数据中导入。在开始使用Python进行数据导入之前,需要先导入pandas库。为了方便起见,我们还导入了numpy库。importnumpyasnpiimportpandasaspdimportexternaldatadf=pd.DataFrame(pd.read_csv('name.csv',header=1))df=pd.DataFrame(pd.read_Excel('name.xlsx'))那里c中可选的参数设置很多,比如列名,索引列,数据格式等。直接写数据df=pd。DataFrame({"id":[1001,1002,1003,1004,1005,1006],"date":pd.date_range('20130102',periods=6),"city":['北京','SH','广州','深圳','上海','北京'],"age":[23,44,54,32,34,32],"category":['100-A','100-B','110-A','110-C','210-A','130-F'],"价格":[1200,np.nan,2133,5433,np.nan,4432]},columns=['id','date','city','category','age','price'])数据表检查数据表检查的目的是了解数据表的整体情况并获得数据表的关键信息和数据概览,比如整个数据表的大小、占用空间、数据格式、是否有空值和重复、具体的数据内容,为后续的清洗和预处理做准备。1、数据维度(行列)在Excel中,可以使用CTRL+下光标键和CTRL+右光标键查看行号和列号。使用Python中的shape函数查看数据表的维度,即行数和列数。df.shape2。数据表信息使用info函数可以查看数据表的整体信息,包括数据维度、列名、数据格式、占用空间等。数据表信息df.info()RangeIndex:6entries,0to5Datacolumns(total6columns):id6non-nullint64date6non-nulldatetime64[ns]city6非空对象类别6非空对象6非空int64price4非空float64dtypes:datetime64[ns](1)、float64(1)、int64(2)、object(2)内存使用:368.0+bytes3。查看数据格式在Excel中,可以通过选中单元格,在开始菜单中查看数值类型来判断数据的格式。使用Python中的dtypes函数返回数据格式。dtypes是查看数据格式的函数。可以一次性查看数据表中所有数据的格式,也可以指定一列单独查看#查看数据表中每一列的格式df.dtypesidint64datedatetime64[ns]cityobjectcategoryobjectageint64pricefloat64dtype:object#查看单列格式df['B'].dtypedtype('int64')4.查看空值Excel中查看空值的方法是利用“查找和查找”中的“定位条件”选择“启动”目录下的“目录”。isnull是Python中测试空值的函数#查看数据空值df.isnull()#查看具体列空值df['price'].isnull()5.查看唯一值在Excel中查看唯一值的方法是使用“条件格式”对唯一值进行颜色编码。使用Python中的unique函数查看唯一值。#查看城市列中的唯一值df['city'].unique()array(['北京','SH','广州','深圳','上海','BEIJING'],dtype=object)6.查看数据表值Python中的Values函数用于查看数据表中的值#查看数据表的值df.values7.查看列名Colums函数用于单独查看数据表中的列名。#查看列名df.columnsIndex(['id','date','city','category','age','price'],dtype='object')8.查看头10行数据function我们来查看数据表的前N行数据#查看前3行数据df.head(3)9.查看最后10行数据tail行号与head函数相反,用于查看数据表最后N行的数据#Viewdf.tail(3)数据表清理的最后3行本章介绍数据表问题的清洗,包括空值、大小写问题、数据格式、重复值的处理。1、处理空值(删除或填充)在Excel中,可以使用“查找和替换”功能来处理空值。Python处理空值的方法比较灵活。可以使用Dropna函数删除数据表中包含空值的数据,您还可以使用fillna函数来填充空值。#删除数据表中包含空值的行df.dropna(how='any')也可以用数字填充空值#用数字0填充数据表df中的空值。fillna(value=0)使用价格列的均值填充NA字段,同样使用了fillna函数。mean函数用在待填充的值中,先计算价格列当前的均值,然后用这个均值填充NA。#用价格的平均值填充NAdf['price'].fillna(df['price'].mean())Out[8]:01200.013299.522133.035433.043299.554432.0Name:price,dtype:float642.Clearspaces字符中的空格也是数据清洗中常见的问题#城市字段中的Clearcharacterspacesdf['city']=df['city'].map(str.strip)3.大小写转换在英文字段中,字母大小写不一致也是一个常见问题。Excel中有UPPER、LOWER等函数,Python中也有同名函数解决大小写问题。#city列大小写转换df['city']=df['city'].str.lower()4.更改数据格式在Excel中,可以通过“设置单元格格式”功能修改数据格式。astype函数用于修改Python中的数据格式。#更改数据格式df['price'].astype('int')012001329922133354334329954432Name:price,dtype:int325.更改列名Rename是一个更改列名的函数,我们以后数据表中的category列改成category-size。#更改列名df.rename(columns={'category':'category-size'})6.删除重复值Excel在数据目录中有“删除重复项”的功能,使用Python中的drop_duplicates函数删除重复值df['city']0beijing1sh2guangzhou3shenzhen4shanghai5beijingName:city,dtype:objectcitybeijing有重复的,分别是第一个和最后一个。drop_duplicates()函数删除重复值#删除后出现的重复值df['city'].drop_duplicates()0beijing1sh2guangzhou3shenzhen4shanghaiName:city,dtype:object参数设置后keep='last'',与前面删除重复值的结果相反,删除第一次出现的beijing#删除第一次出现的重复值df['city'].drop_duplicates(keep='last')1sh2guangzhou3shenzhen4shanghai5beijingName:城市,数据类型:objec7。数值修改替换使用Excel中的“查找替换”功能替换数值Python使用替换功能实现数据替换#数据替换df['city'].replace('sh','shanghai')0beijing1shanghai2guangzhou3shenzhen4shanghai5beijingName:city,dtype:object数据预处理本章主要讲数据预处理,将清洗后的数据整理出来,用于后期统计分析。主要包括数据表的合并、排序、排序、排序、数据分组和标记。1.数据表合并Excel中没有直接完成数据表合并的功能,可以通过VLOOKUP函数一步步实现。在Python中,可以通过merge函数一次性实现。#构建df1数据表df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008],"gender":['男','女','男','女','男','女','男','女'],"pay":['Y','N','Y','Y','N','Y','N','Y',],"m-point":[10,12,20,40,40,40,30,20]})使用合并函数合并两个数据表,合并的方式对于inner,将两个数据表中的公共数据匹配在一起,生成一个新的数据表。并将其命名为df_inner。#数据表匹配合并df_inner=pd.merge(df,df1,how='inner')合并有左、右、外三种方式df_left=pd.merge(df,df1,how='left')df_right=pd.merge(df,df1,how='right')df_outer=pd.merge(df,df1,how='outer')2.设置索引列索引列可用于数据抽取、汇总、数据filtering#Setindexcolumndf_inner.set_index('id')3.排序(按索引,按值)在Excel中,可以通过数据目录下的排序按钮直接对数据表进行排序。在Python中,需要使用ort_values函数和sort_index函数来完成排序Value排序df_inner.sort_values(by=['age'])sort_index函数用于按照索引列的值对数据表进行排序.#按索引列排序df_inner.sort_index()4.数据分组在Excel中,可以使用VLOOKUP函数进行近似匹配来完成数值的分组,也可以使用“数据透视表”来完成分组。使用Python中的Where函数对数据进行分组判断并分组#如果price列的值>3000,则分组列显示high,否则显示lowdf_inner['group']=np.where(df_inner['price']>3000,'high','low')也可以通过判断多个字段的值后,对数据进行分组。下面代码中,city列等于beijing,price列大于等于4000的数据标记为1。=='北京')&(df_inner['价格']>=4000),'标志']=15.数据点Excel的数据目录下提供了“分栏”功能。使用Python中的split函数来实现拆分。数据表中类别列的数据包含两条信息。前面的数字是类别id,后面的字母是尺寸值。用连字符连接它们。我们使用split函数对这个字段进行拆分,将拆分后的数据表匹配回原始数据表。#将category字段的值依次排序,创建数据表,索引值为df_inner的索引列,列名为category和sizepd.DataFrame((x.split('-')forxindf_inner['category']),index=df_inner.index,columns=['category','size'])#用原df_inner数据表匹配列完成后的数据表df_inner=pd.merge(df_inner,split,right_index=True,left_index=True)数据提取1.按标签提取(loc)#按索引提取单行的值df_inner.loc[3]id1004date2013-01-0500:00:00cityshenzhencategory110-Cage32price5433genderfemalem-point40payYgrouphighsignNaNcategory_1110sizeCName:3,dtype:object冒号可以用来限制提取数据的范围。冒号之前是开始标记值,冒号之后是结束标记值。#按索引提取区域行值df_inner.loc[0:5]reset_index函数用于恢复索引,这里我们将日期字段的日期重置为数据表的索引,按日期提取数据。#重置索引df_inner.reset_index()#设置日期为索引df_inner=df_inner.set_index('date')#提取4天前的所有数据df_inner[:'2013-01-04']2.按位置提取(iloc)使用iloc函数按位置提取数据表中的数据。这里,冒号前后的数字不再是索引的标签名称,而是数据的位置,从0开始。#使用iloc按位置区域提取数据df_inner.iloc[:3,:2]的iloc函数不仅可以按区域提取数据,还可以按位置逐个提取数据#使用iloc单独按位置提取数据df_inner.iloc[[0,2,5],[4,5]]0,2,5前面方括号中代表数据所在行的位置,后面方括号中的数字代表列的位置。3.按标签和位置提取(ix)ix是loc和iloc的混合体,可以按索引标签和位置提取数据。#使用ix混合索引标签和位置提取数据df_inner.ix[:'2013-01-03',:4]4.按条件提取(面积和条件值)结合使用loc和isin函数提取数据根据指定条件#判断city列的值是否为beijingdf_inner['city'].isin(['beijing'])date2013-01-02True2013-01-05False2013-01-07True2013-01-06False2013-01-03False2013-01-04FalseName:city,dtype:bool将isin函数嵌套到loc的数据提取函数中,判断结果为True数据提取。这里我们将判断条件改为city值是否为beijing和shanghai。如果是这样,请提取此数据。#首先判断city列中是否包含beijing和shanghai,然后提取复合条件的数据。df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])]datafilterfilterbycondition(and,or,not)Excel数据目录为数据表提供了“过滤”功能被不同的标准过滤。在Python中,loc函数是用来配合过滤条件来完成过滤功能的。配合sum和count函数也可以实现Excel中sumif和countif函数的功能。使用“and”条件进行过滤,条件是年龄大于25岁,城市为北京。#使用“and”条件过滤df_inner.loc[(df_inner['age']>25)&(df_inner['city']=='beijing'),['id','city','age','category','gender']]/#使用“或”条件过滤df_inner.loc[(df_inner['age']>25)|(df_inner['city']=='beijing'),['id','city','age','category','gender']].sort(['age'])#用"non"过滤条件df_inner.loc[(df_inner['city']!='beijing'),['id','city','age','category','gender']].sort(['id'])在上一段代码后添加city这一列,并使用count函数进行统计。相当于Excel中的countifs函数#按城市列统计过滤后的数据df_inner.loc[(df_inner['city']!='beijing'),['id','city','age','category','gender']].sort(['id']).city.count()另一种过滤方式是使用查询函数#使用查询函数进行过滤df_inner.query('city==["北京","shanghai"]')在前面的代码后添加价格字段和求和函数。对过滤后的价格字段进行求和,相当于Excel中sumifs函数的作用。#按价格对过滤后的结果求和df_inner.query('city==["beijing","shanghai"]').price.sum()12230数据汇总Excel可以使用小计和数据透视按特定维度汇总数据,而Python中使用的主要函数是groupby和pivot_table。1.小计#对所有列进行统计汇总df_inner.groupby('city').count()/#对特定ID列统计汇总df_inner.groupby('city')['id'].count()citybeijing2guangzhou1shanghai2shenzhen1Name:id,dtype:int64#对两个字段进行聚合统计df_inner.groupby(['city','size'])['id'].count()citysizebeijingA1F1guangzhouA1shanghaiA1B1shenzhenC1Name:id,dtype:int64也可以同时计算多个维度的聚合数据#汇总city字段,计算price的总和和均值。df_inner.groupby('city')['price'].agg([len,np.sum,np.mean])2.Python中的pivot_table函数实现同样的效果#设置city为行字段,size为列字段,price为值字段。分别计算价格的数量和金额,按行列汇总。pd.pivot_table(df_inner,index=["city"],values=["price"],columns=["size"],aggfunc=[len,np.sum],fill_value=0,margins=True)统计数据1.数据采样Excel的数据分析功能中提供了数据采样的功能。Python通过sample函数完成数据采样#简单数据采样df_inner.sample(n=3)Weights参数是采样的权重,可以通过设置不同的权重改变采样结果#手动设置采样权重weights=[0,0,0,0,0.5,0.5]df_inner.sample(n=2,weights=weights)Sample函数中的参数replace用于设置采样后是否放回#不要放回df_inner.sample(n=6,replace=False)#sample采样后放回df_inner.sample(n=6,replace=True)2.描述性统计在Python中,可以使用Describe来描述数据#Data表描述性统计df_inner.describe().round(2).T3.相关性分析在Python中,corr函数用于完成相关性分析操作,并返回相关系数。#相关分析df_inner['price'].corr(df_inner['m-point'])0.77466555617085264#数据表相关分析df_inner.corr()数据输出1.写入Excel#输出为Excel格式df_inner.to_Excel('Excel_to_Python.xlsx',sheet_name='bluewhale_cc')2.写入csv#输出为CSV格式df_inner.to_csv('Excel_to_Python.csv')参考王艳平《从Excel到Python:数据分析进阶指南》本文由多篇博客发布平台OpenWrite发布帖子!