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新手实现2048小游戏
Mar 31 Python
python常见数制转换实例分析
May 09 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
Python安装pycurl失败的解决方法
Oct 15 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
python区分不同数据类型的方法
Oct 14 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
基于Keras的格式化输出Loss实现方式
Jun 17 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 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
php 变量定义方法
2009/06/14 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
理解JavaScript中的事件
2006/09/23 Javascript
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
Python collections模块实例讲解
2014/04/07 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
python线程中的同步问题及解决方法
2019/08/29 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
2014年教师节寄语
2014/04/03 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
2014年预算员工作总结
2014/12/05 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers