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中字符串的修改及传参详解
Nov 30 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
Python高级用法总结
May 26 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
Python 的AES加密与解密实现
Jul 09 Python
用python解压分析jar包实例
Jan 16 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
Feb 29 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
Keras设置以及获取权重的实现
Jun 19 Python
Python3 类型标注支持操作
Jun 02 Python
python 标准库原理与用法详解之os.path篇
Oct 24 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
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
简单的python协同过滤程序实例代码
2018/01/31 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
Python with语句和过程抽取思想
2019/12/23 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
文言文形式的学生求职信
2013/12/03 职场文书
文明礼仪事迹材料
2014/01/09 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
小学教研工作总结2015
2015/05/13 职场文书
外出考察学习心得体会
2016/01/18 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript