利用Python进行数据分析最核心的库就是Pandas,可以说,掌握了Pandas库,Python数据分析就属于中阶水平了。

在《一次简单、完整的全流程数据分析,让我们不再害怕Python 》一文中我们介绍了Python进行数据分析全流程的几个主要函数。但由于实际中的分析需求可能比较复杂,就要求对数据做更加复杂的处理。

所以,我们有必要提前准备一些常用的函数,这些函数不用全部会,知道有这些函数,并做到在我们要实现数据处理逻辑时,知道有什么函数可用就够了。

为了便于学习这些函数,本文按照各自类型进行了分门别类。

几点注意事项


在介绍具体的函数时,说几点注意事项:

  • 初学时最好习惯于写参数名称;
  • 根据函数的作用去理解它可以作用于哪种对象,又会返回何种对象;
  • 函数(也就是对象的方法)需要有括号,查看对象属性没有括号。
  • axis=i,表示i维进行变化,而其他维度不变。例如,当i=0时,就是说行维度值进行变化,其它维度不变,这就表明是按列进行处理。

常用函数


为了便于我们掌握,我们结合数据分析的流程和其内部函数的作用,将其分为以下几类,具体见下图。

(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)数据读取

数据读取重点掌握以下三种。

pd.read_table(filename, sep='\t', header=0, index_col=None,……)
#要读取的文件名称是必须输入的参数,其余为可选项,header为要选取哪一行作为列名称,默认第一行
pd.read_csv(filename, sep=',', header=0, index_col=None,……)
#与上面的函数用法大致相同
pd.read_excel(filename,sheet_name=0, header=0,index_col=None,……)
#从Excel文件读入数据,增加了sheet_name参数的选项,代表要读取第几个工作表的数据

(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)数据筛选

数据筛选的本质无外乎就是根据行和列的特性来选择满足我们需求的数据,掌握这些基本的筛选方法就可以组合复杂的筛选方法。

df["col1"]
#选择某一列,返回的是Series类型
df[["col1"]]
#选择某一列,返回的是DataFrame类型
df[df["col1"] > 1]
#选取满足条件的行,df["col"]>1返回的还是一个数据框,只是每个值为bool值
df.query("col1 > 1")
#这种方法也可选取满足条件的行
df.loc[m:n]
#按照行索引选取m~n行,注意是包含n的
df.loc[m:n,'col1':'coln']
#注意loc函数的参数都是索引名
df.iloc[m:n]
#获取从m~n-1行,iloc函数代表的是位置,即参数都是数字,代表第几行第几列
df.select_dtypes(include=None, exclude=None)
#按照数据类型选择列
df.isin(values=)
#数据框中数据是否存在于values中,返回的是DataFrame类型

(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)数据处理

数据处理的范畴很广,包含数据的统计汇总,也包含数据的转换,做这一块时脑中要同时进行抽象处理,便于查看逻辑是否有错。

pd.merge(df1, df2, on='col1',left_on='col1',right_on='col2',how='inner',sort=False)
#how有outer,left,right选项,默认inner,suffixes表示在相同的列名添加后缀
pd.concat([df1,df2,df3], axis=0,join='outer',ignore_index=False,keys=["x","y","z"])
#按行或是按列拼接多个数据框或Series,axis=0为按列拼接,即增加在行下面,key添加层次化索引
df1.append(df2,ignore_index=False)
#可为df也可为s,按列添加,即添加行,ignor_index=False意思是都按照原先的行索引值
df.stack(level=-1,dropna=True)
#列旋转成行,也就是列名变为行索引名,原索引变成多层索引,
#level表示选取哪个索引进行转换,-1表示最内层的索引,0表示第一层索引
df.unstack(level=-1,fill_value=None)
#行转列,默认从最内层索引开始
df.pivot_table(index=["col1","col2"],values=["col3"],columns=["col4"],aggfunc="count")
#类似于Excel中的数据透视表,index表示选择行,column是选择列,values是进行函数计算的列
df.groupby(["col1"])
#根据列对数据框进行分组,返回分组对象
df.groupby(["col1"])["col2"].count()
#表示根据col1列进行分组,统计col2列的行数。这种方式是最为常用的统计汇总方法
df.agg({"col1":"count","col2":"sum"},axis=0)
#agg是聚合的别名,表示对不同列用不同函数进行统计,返回Series对象
df.sort_values(by='col1',axis=0,ascending=True, inplace=False, na_position={"last","first"})
#按照某一列对数据框进行排序
df.apply(lambda x :x.max()-x.min(),axis=0)
#默认参数axis=0,表示按列对数据进行操作
df.applymap(lambda x : 1 if x>0 else 0)
#对数据框每一个数据进行操作,返回DataFrame格式
s.map(lambda x : 1 if x>0 else 0)
#对Series的每一个数据进行,不能对DataFrame操作
s.value_counts()
#对Series中数据进行分类汇总
pd.cut(s,bins=[-np.inf,0,np.inf],labels=list("abc"))
#bins为左开右闭区间,将Series数据进行分类
df.where(df<0,0)
#与numpy的where函数有不同,后面的值表示不满足条件的赋值为0,满足的话就不变
pd.date_range(start='2020-01-01',end='2020-02-01',periods=,freq="D")
#periods为期数,注意不要冲突,freq为类型,种类有很多,默认是天,M为月尾,MS为月初

结语

函数还有很多,但都不太常见了。我们平时学习的时候可以养成记笔记的好习惯,即把出现的函数记下来,分门别类地汇总在一起,等记不清时就可以直接在汇总中查找了,闲暇时也可以瞅一瞅,这样次数多了后就会慢慢全部记住了。

Python经验分享

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

Python学习路线

这里把Python常用的技术点做了整理,有各个领域的知识点汇总,可以按照上面的知识点找对应的学习资源。

学习软件

Python常用的开发软件,会给大家节省很多时间。

学习视频

编程学习一定要多多看视频,书籍和视频结合起来学习才能事半功倍。

100道练习题

实战案例

光学理论是没用的,学习编程切忌纸上谈兵,一定要动手实操,将自己学到的知识运用到实际当中。

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

Python数据分析常用函数及参数详解,可以留着以备不时之需相关推荐

  1. Python函数的参数详解

    Python函数的参数详解 函数是一个通用的程序结构组件.你也许已经在其他的编程语言中见到过,有时也被称为子程序或过程.简而言之,函数主要扮演了两个角色: 1)最大化代码重用和最小化代码冗余--函数允 ...

  2. python中累加函数_对Python实现累加函数的方法详解

    对Python实现累加函数的方法详解 发布时间:2020-10-26 00:02:44 来源:脚本之家 阅读:120 作者:岚漾忆雨 这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能 ...

  3. pthread_create函数的详细讲解(包括向线程函数传递参数详解)

    pthread_create是UNIX环境创建线程函数 头文件 #include<pthread.h> 函数声明 int pthread_create(pthread_t*restrict ...

  4. Python自定义函数的创建、调用和函数的参数详解

    这篇文章主要介绍了Python自定义函数的创建.调用和函数的参数.变量作用域等常见问题,需要的朋友可以参考下 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性 ...

  5. python的scipy层次聚类参数详解

    详解python中层次聚类的fcluster函数 调用实例: import scipy import scipy.cluster.hierarchy as sch from scipy.cluster ...

  6. python数据分析基础之Numpy库详解(一)

    Numpy库基础 安装numpy库 numpy介绍 Numpy数组对象 创建多维数组 获取数组中的元素 Numpy数据类型 数据类型对象 Numpy字符编码 自定义数据类型 dtype类的属性 创建自 ...

  7. python内置函数compile用法详解

    python内置函数compile 可以将字符串编译成字节代码或者AST对象,字节代码对象可以被exec() 或 eval() 执行. 语法结构: compile(source, filename, ...

  8. python字符串find函数-python字符串查找函数的用法详解

    python字符串查找函数的使用 打开Python开发工具IDLE,新建"findstr.py'文件,并写代码如下: s ='/ab/bx,.s' print (s.find('/x')) ...

  9. main函数的参数详解,它们是何时何处传入的?(main函数的参数值是从操作系统命令行上获得的)

    一般的main函数都是不带参数的,因此main 后的括号都是空括号.实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个, 习惯上这两个参 ...

最新文章

  1. 香港商务及经济发展局长:看好物联网发展
  2. python读取word文档结构图_python根据文章标题内容自动生成摘分享的实例
  3. 深度学习——夏侯南溪的深度神经网络的调参日志
  4. Ruby 获取 HTTP 回应的编码和内容
  5. html select ajax,AJAX 动态加载后台数据 绑定select的方法
  6. oracle存储过程(带参数的存储过程)
  7. 三星note10 android q,【极光ROM】-【三星NOTE10/NOTE10+/5G N97XX-855】-【V5.0 Android-Q-TD1】...
  8. Himawari-8数据下载及命名
  9. 北京联通dns服务器位置,全国联通DNS服务器地址
  10. Windows 2012重置系统管理员密码
  11. 【渗透测试】CS DNS上线(DoH隧道+CS特征隐藏)
  12. 软件架构设计---软件架构评估
  13. python123第五周随机密码生成_利用Python生成随机密码
  14. 【论文阅读】Rethinking Spatiotemporal Feature Learning For Video Understanding
  15. Java小项目——客户的关系管理系统
  16. JavaScript基础之基础
  17. 自动驾驶深度多模态目标检测和语义分割:数据集、方法和挑战
  18. RabbitMQ-dlx死信队列
  19. 计算机测控技术在线作业二答案,华东《计算机测控技术》2020年春季学期在线作业(二)答卷【标准答案】...
  20. Webpack 3.0来了,就问你慌不慌

热门文章

  1. echarts图 示例
  2. Java高性能解析器实现思路及方法
  3. 产品经理们如何看待NPDP认证?你知道吗?
  4. 【JFreeChart】自定义蜘蛛网图生成带刻度三角雷达图 自定义文字风格 背景色
  5. Linux环境配置编译orange,orangepi zero2编译环境搭建及传感器测试
  6. java ape切割_ape-j
  7. Python的数据分析中超参数调优方法:网格搜索
  8. 拥有一把高性价比全单民谣吉他是一种什么体验? VEAZEN费森性价比S88全单系列民谣吉他震撼上线
  9. java跳转到jsp_Servlet跳转到jsp页面的几种方法
  10. Spring+Quartz定时任务调度