Python Pandas常用函数方法总结


Posted in Python onJune 15, 2021

初衷

NumPy、Pandas、Matplotlib、SciPy 等可以说是最最最常用的 Python 库了。我们在使用 Python 库的时候,通常会遇到两种情况。以 Pandas 举例。

  • 我想对 Pandas 数据结构的数据实现某种操作,但是我不知道或者说在我的印象里似乎已经不记得是否有这样的函数方法,如果有,又该用哪个方法呢?
  • 我想实现某种数据操作,我记得我用过或者见过某个函数可以实现这个功能,但是我死活想不起来那个函数叫啥了。或者,我想起来了哪个函数可以实现这个功能,但是我想知道是否有更好的选择。

这个时候大家就会开始借助百度、知乎、谷歌、CSDN 开始进行关键搜索了。这样做当然可以,最终也能得到你想要的结果,但是就会面临两个小问题。

  • 有时候我想对数据做这样的操作,我心里知道是这个意思,但是我不知道如何去描述这个事情,关键词不精确,导致搜索的结果有偏差,搜索技术不行,走了不少弯路。
  • 搜索到别人提供的结果,但是呢,要么排版很乱,要么长篇大论,从函数接口开始一点一点说,一堆你不想要的信息,让你 get 不到重点,明明一秒钟可以解决的问题,却花了你一分钟去看别人的解释,获取重点,浪费了不少时间。

基于以上,我就在想如何解决这样一个问题。解决方案如下:假如你知道但只是忘记了某个函数可以实现这个功能,那么当你看到函数名称的时候,就会想起来。所以,我想把最最常用的一些方法和函数名称直接罗列出来,然后你一眼扫过去或者直接 ctrl+f 搜索中文,就能轻易唤起你曾经的记忆。假如你不知道是否存在一个函数,有你想要的功能,我依然还是把函数名称罗列出来,然后在其后进行一个中文的补充说明。你一眼扫过这些函数及其补充说明,相信很快就能判断是否有满足你需求的函数。

下面的内容这样组织,第二部分我罗列出常用的 Pandas 函数方法,及其补充说明,第三部分我对这些函数的用法进行举例子,你拷贝到代码中进行修改就可以直接使用,这比从接口模板开始一点一点看省事多了。我相信这也是大部分优秀的程序员想要的东西,用最短的时间,完成想做的事情。当然,当下面的内容不满足你的需求,你可以进一步地去搜索即可。

以下函数方法,涵盖了 90% 以上的使用情况,值得收藏,作为小字典查询。

除非你经常用某种语言,函数方法烂熟于心而根本不需要查询,否则的话,大部分人也记不住这些东西。可能只记得有这么一个东西,都是现查别人的代码,要么拷贝过来改改,要么手抄过来。特别是我这种,接触的语言比较多,就经常搞串用法,大部分时候 ,都是现查现卖。

Pandas 最最常用函数罗列

## 读写
pd.Series #定义一维标记数组
pd.DataFrame #定义数据框
pd.read_csv #读取逗号分隔符文件
pd.read_excel #读取 excel 表格
pd.to_excel #写入 excel 表格
pd.read_sql #读取 SQL 数据
pd.read_table #读取 table
pd.read_json #读取 json 文件
pd.read_html #读取 html
pd.read_clipboard() #从剪切板读入数据
df.to_csv #写入 csv 文件
df.to_excel #写入 excel 文件
df.to_sql #写入 SQL 表
df.to_json #写入 JSON 文件
df.to_html #写入 HTML 表格
df.to_clipboard() #写入剪切板

## 数据展示和统计
df.info() #统计数据信息
df.shape() #统计行数和列数
df.index() #显示索引总数
df.columns() #显示数据框有哪些列
df.count() #显示有多少个记录
df.head(n) #返回前 n 个,默认 5
df.tail(n) #返回后 n 个
df.sample(n) #随机选取 n 行
df.sample(frac = 0.8) #百分比为 0.8 的选取
df.dtypes #查看每一列的数据类型
df.sum() #数据框按列求和
df.cumsum() #数据框累计求和
df.min() #给出每列的最小值
df.max() #给出每列的最大值
df['列名'].idxmin() #获取数据框某一列的最小值
mySeries.idxmin() #获取 Series 的最小值
df['列名'].idxmax() #获取数据框某一列的最大值
mySeries.idxmax() #获取 Series 的最大值
df.describe() #关数据的基本统计信息描述
df.mean() #给出数据框每一列的均值
df.median() #给出数据框每一列的中位数
df.quantile #给出分位数
df.var() #统计每一列的方差
df.std() #统计每一列的标准差
df.cummax() #寻找累计最大值,即已出现中最大的一个
df.cummin() #累计最小值
df['列名'].cumproad() #计算累积连乘
len(df) #统计数据框长度
df.isnull #返回数据框是否包含 null 值
df.corr() #返回列之间的相关系数,以矩阵形式展示
df['列名'].value_counts() #列去重后给每个值计数

## 数据选择
mySeries['列名'] #用中括号获取列
df['列名'] #选取指定列
df.列名 #同上
df[n0:n1] #返回 n0 到 n1 行之间的数据框
df.iloc[[m],[n]] #iloc按行号来索引,两层中括号,取第 m 行第 n 列
df.loc[m:n] #loc 按标签来索引,返回索引 m 到 n 的数据框,loc、iloc 主要针对行来说的
df.loc[:,"列1":"列2"] #返回连续列的所有行
df.loc[m:n,"列1":"列2"] #返回连续列的固定行
df['列名'][n] #选取指定列的第 n 行
df[['列1','列2']] #返回多个指定的列

## 数据筛选和排序
df[df.列名 < n] #筛选,单中括号用于 bool 值筛选
df.filter(regex = 'code') #过滤器,按正则表达式筛选
df.sort_values #按某一列进行排序
df.sort_index() #按照索引升序排列
df['列名'].unique() #列去重
df['列名'].nunique() #列去重后的计数
df.nlargest(n,'列名') #返回 n 个最大值构成的数据框
df.nsmallest(n,'列名') #返回 n 个最小的数据框
df.rank #给出排名,即为第几名

## 数据增加删除修改
df["新列"] = xxx #定义新列
df.rename #给列重命名
df.index.name = "index_name" #设定或者修改索引名称
df.drop #删除行或者列
df.列名 = df.列名.astype('category') #列类型强制转化
df.append #在末尾追加一行
del df['删除的列'] #直接删除一列

## 特别的
df.列名.apply #按列的函数操作
pd.melt #将宽数据转化为长数据(拆分拉长),run 一下下面例子就知道什么意思了
pd.merge #两个数据表间的横向连接(内连接,外连接等)
pd.concat #横向或者纵向拼接

Pandas 函数用法示例

mySeries = pd.Series([1,2,3,4], index=['a','b','c','d'])

data = {'Country' : ['Belgium', 'India', 'Brazil' ],
        'Capital': ['Brussels', 'New Delhi', 'Brassilia'],
        'Population': [1234,1234,1234]}
df = pd.DataFrame(data, columns=['Country','Capital','Population'])

pd.DataFrame(np.random.rand(20,5))

df = pd.read_csv('data.csv')

pd.read_excel('filename')
pd.to_excel('filename.xlsx', sheet_name='Sheet1')

df.quantile([0.25, 0.75]) # 给出每一列中的25%和75%的分位数

filters = df.Date > '2021-06-1'
df[filters] #选出日期在某个日期之后的所有行

df.filter(regex='^L') #选出 L 开头的列

df.sort_values('列名', ascending= False) #按指定列的值大小升序排列

df.rename(columns= {'老列名' : '新列名'}) #修改某个列名

df["新列"] = df.a- df.b #定义一个新的列表示为两个的差

df.columns = map(str.lower(), df.columns) #所有列名变为小写字母

df.columns = map(str.upper(), df.columns) #所有列名变为大写字母

df.drop(columns=['列名']) #删除某一列
df.drop(['列1', '列2'], axis=1) #含义同上,删除两列
mySeries.drop(['a']) #删除 Series 指定值
df.drop([0, 1]) #根据索引删除,双闭区间

def fun(x):
    return x*3
df.列名.apply(fun)  #把某一列乘 3 倍

df.列名.apply(lambda x: x*3) #匿名表达式的写法

df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},'B': {0: 1, 1: 3, 2: 5}, 'C': {0: 2, 1: 4, 2: 6}})
pd.melt(df, id_vars=['A'], value_vars=['B','C']) #melt的使用

new=pd.DataFrame({'name':'lisa', 'gender':'F', 'city':'北京'},index=[1])
df = new
df=df.append(new) #增加一行数据

frame = pd.DataFrame({'a':[2.3,-1.7,5,3],'b':[6,2.9,-3.1,8]},index=['one','two','three','four'])
frame.rank(method="min",ascending=False)#对每一列的数据,根据大小给个排名


#merge 表示横向连接
df3 = pd.merge(df1,df2,how='inner',on='股票简称') #on表示连接列,how选择连接方式
pd.merge(df1,df2,left_on='lkey',right_on='rkey',how='left') #当连接列名不同分别指定
#concat 拼接
pd.concat([df1,df1])  #纵向连接,当s1和s2索引不重叠时,可以直接拼接
pd.concat([df1,df1],axis = 1)  #横向连接,默认外连接,以行索引为连接字段

到此这篇关于Python Pandas常用函数方法总结的文章就介绍到这了,更多相关Pandas常用函数方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
深入浅析python继承问题
May 29 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
Python实现一个简单的验证码程序
Nov 03 Python
python机器学习库常用汇总
Nov 15 Python
Scrapy使用的基本流程与实例讲解
Oct 21 Python
如何用C代码给Python写扩展库(Cython)
May 17 Python
Python绘制热力图示例
Sep 27 Python
对python中assert、isinstance的用法详解
Nov 27 Python
Python3之外部文件调用Django程序操作model等文件实现方式
Apr 07 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
深入理解python协程
Jun 15 #Python
2021年最新用于图像处理的Python库总结
Python中的xlrd模块使用整理
Jun 15 #Python
浅谈python中的多态
Jun 15 #Python
如何正确理解python装饰器
Jun 15 #Python
详解python网络进程
整理Python中常用的conda命令操作
You might like
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
jquery对表单操作2
2011/04/06 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
基于python监控程序是否关闭
2020/01/14 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
管理心得体会
2013/12/28 职场文书
驾驶员岗位职责
2014/01/29 职场文书
校运会入场式解说词
2014/02/10 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
1亿有多大教学反思
2014/05/01 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
个性与发展自我评价
2015/03/06 职场文书
中英文求职信范文
2015/03/19 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers