利用Python进行数据分析最核心的库就是Pandas,可以说,掌握了Pandas库,Python数据分析就属于中阶水平了。 在《一次简单、完整的全流程数据分析,让我们不再害怕Python 》一文中我们介绍了Python进行数据分析全流程的几个主要函数。但由于实际中的分析需求可能比较复杂,就要求对数据做更加复杂的处理。 所以,我们有必要提前准备一些常用的函数,这些函数不用全部会,知道有这些函数,并做到在我们要实现数据处理逻辑时,知道有什么函数可用就够了。 为了便于学习这些函数,本文按照各自类型进行了分门别类。 几点注意事项在介绍具体的函数时,说几点注意事项:
常用函数为了便于我们掌握,我们结合数据分析的流程和其内部函数的作用,将其分为以下几类,具体见下图。 (1)对象创建 pandas中有两种重要对象:Series和DataFrame。前者类似一维数组,后者可看成Excel中的表格数据。后文将用df表示任意的DataFrame对象,用s表示任意的Series对象,用pd表示pandas库。 df.duplicated(subset=['col'],keep=first) #各行是否是重复行,返回Series,keep参数为first,last,False,first意思是第一次出现的重复值保留。df.drop_duplicates(subset=['col'],keep=first,ignore_index=True) #根据列删除重复行,返回删除后的结果数据df.fillna(value=,inplace=) #用value值填充na,返回填充后的结果数据df.dropna(axis=0,how='any',inplace=False) #axis=0即行,how有‘any’和‘all’两个选项,all表示所有值都为NA才删除df.drop(labels=0,columns=['col1'],axis=0,) #删除指定列,也可以删除行,axis作用不大 df.rename(index={'row1':'A'},columns={'col1':'A1'}) df.replace(to_replace=np.nan,value=0,inplace=False) #替换df值,前后值可以用字典表,{1:‘A', '2':'B'} (2)数据读取 数据读取重点掌握以下三种。
(3)数据描述 在读完数据后,我们要先查看数据的整体情况。 df.info() #查看数据框基本信息,包含多少行和列,每列什么类型等等df.descirbe() #查看数据的整体描述,统计的是数值型列df.head(n) #查看前n行df.tail(n) #查看后n行df.count(axis=0) #非空值个数,返回Series,0为按列统计,1为按行统计df.isna()#返回每个元素是否是缺失值的bool数据框df.isnull()#返回每个元素是否是空值的bool数据框df.columns#返回Index类型的列的集合,因为列名称是属性,所以没有括号df.dtypes#每一列的数据类型df.index#行索引名,返回Index类型的索引的集合df.shape#返回(行数,列数)格式的元组df.values#值的二维数组,返回numpy.ndarray对象s.nunique()#返回唯一值个数s.unique()#唯一值数据,返回array格式 (3)数据筛选 数据筛选的本质无外乎就是根据行和列的特性来选择满足我们需求的数据,掌握这些基本的筛选方法就可以组合复杂的筛选方法。
(4)数据清洗 数据清洗主要是一些重复值、缺失值和索引名称等问题的处理。 df.duplicated(subset=['col'],keep=first) #各行是否是重复行,返回Series,keep参数为first,last,False,first意思是第一次出现的重复值保留。df.drop_duplicates(subset=['col'],keep=first,ignore_index=True) #根据列删除重复行,返回删除后的结果数据df.fillna(value=,inplace=) #用value值填充na,返回填充后的结果数据df.dropna(axis=0,how='any',inplace=False)#axis=0即行,how有‘any’和‘all’两个选项,all表示所有值都为NA才删除df.drop(labels=0,columns=['col1'],axis=0,) #删除指定列,也可以删除行,axis作用不大 df.rename(index={'row1':'A'},columns={'col1':'A1'}) #重命名行索引和列名称df.replace(to_replace=np.nan,value=0,inplace=False) #替换df值,前后值可以用字典表示,如{'a':‘A', 'b':'B'}df.columns=pd.MultiIndex.from_tuples(indx) #构建层次化索引 (5)数据处理 数据处理的范畴很广,包含数据的统计汇总,也包含数据的转换,做这一块时脑中要同时进行抽象处理,便于查看逻辑是否有错。
结语函数还有很多,但都不太常见了。我们平时学习的时候可以养成记笔记的好习惯,即把出现的函数记下来,分门别类地汇总在一起,等记不清时就可以直接在汇总中查找了,闲暇时也可以瞅一瞅,这样次数多了后就会慢慢全部记住了。 |
|