DataFrame的apply()、applymap()、map()方法[通俗易懂]

DataFrame的apply()、applymap()、map()方法[通俗易懂]对DataFrame对象中的某些行或列,或者对DataFrame对象中的所有元素进行某种运算或操作,我们无需利用低效笨拙的循环,DataFrame给我们分别提供了相应的直接而简单的方法,apply()和applymap()。其中apply()方法是针对某些行或列进行操作的,而applymap()方法则是针对所有元素进行操作的。1map()方法Themapmethod…

大家好,又见面了,我是你们的朋友全栈君。

       对DataFrame对象中的某些行或列,或者对DataFrame对象中的所有元素进行某种运算或操作,我们无需利用低效笨拙的循环,DataFrame给我们分别提供了相应的直接而简单的方法,apply()和applymap()。其中apply()方法是针对某些行或列进行操作的,而applymap()方法则是针对所有元素进行操作的。

 1 map()方法

The map method works on series, so in our case, we will use it to transform a column of our DataFrame, which remember is just a pandas Series. Suppose that we decide that the class names are a bit long for our taste and we would like to code them using our special threeletter coding system. We’ll use the map method with a Python dictionary as the argument toaccomplish this. We’ll pass in a replacement for each of the unique iris types:

df[‘class’] = df[‘class’].map({‘Iris-setosa’: ‘SET’, ‘Iris-virginica’:’VIR’, ‘Iris-versicolor’: ‘VER’})
df

DataFrame的apply()、applymap()、map()方法[通俗易懂]

2 Apply()方法

The apply method allows us to work with both DataFrames and Series. We’ll start with an example that would work equally well with map, then we’ll move on to examples that would work only with apply.

Using the iris DataFrame, let’s make a new column based on the petal width. We previously saw that the mean for the petal width was 1.3. Let’s now create a new column in our DataFrame, wide petal, that contains binary values based on the value in the petal width column. If the petal width is equal to or wider than the median, we will code it with a 1, and if it is less than the median, we will code it 0. We’ll do this using the apply method on the petal width column:

df[‘wide petal’] = df[‘petal width’].apply(lambda v: 1 if v >= 1.3 else 0)
df

DataFrame的apply()、applymap()、map()方法[通俗易懂]

df[‘petal area’] = df.apply(lambda r: r[‘petal length’] * r[‘petal width’],axis=1)
df

DataFrame的apply()、applymap()、map()方法[通俗易懂]

3 Applymap()方法

We’ve looked at manipulating columns and explained how to work with rows, but suppose that you’d like to perform a function across all data cells in your DataFrame; this is where applymap is the right tool. Let’s take a look at an example:

df.applymap(lambda v: np.log(v) if isinstance(v, float) else v)

DataFrame的apply()、applymap()、map()方法[通俗易懂]

4 Groupby方法

df.groupby(‘class’).mean()

df.groupby(‘petalwidth’)[‘class’].unique().to_frame()

df.groupby(‘petalwidth’)[‘class’].unique().to_frame()

DataFrame的apply()、applymap()、map()方法[通俗易懂]

df.groupby(‘petal width’)[‘class’].unique().to_frame()

df.groupby(‘class’).describe()

df.groupby(‘class’)[‘petal width’].agg({‘delta’: lambda x: x.max() – x.min(), ‘max’: np.max, ‘min’: np.min})

   

简单来说,apply()方法 可以作用于DataFrame 还有Series, 作用于一行或者一列时,我们不妨可以采用,因为可以通过设置axis=0/1 来把握,demo如下:

DataFrame的apply()、applymap()、map()方法[通俗易懂]

applymap() 作用于每一个元素

DataFrame的apply()、applymap()、map()方法[通俗易懂]

map可以作用于Series每一个元素的

DataFrame的apply()、applymap()、map()方法[通俗易懂]

总的来说,map()、aply()、applymap()方法是一种对series、dataframe极其方便的应用与映射函数。

最后,非常重要的一点,这些映射函数,里面都是可以放入自定义函数的。

tips.head()

Out[34]:

total_bill tip smoker day time size tip_pct
0 16.99 1.01 No Sun Dinner 2 0.059447
1 10.34 1.66 No Sun Dinner 3 0.160542
2 21.01 3.50 No Sun Dinner 3 0.166587
3 23.68 3.31 No Sun Dinner 2 0.139780
4 24.59 3.61 No Sun Dinner 4 0.146808

def top(df,n=5,column=’tip_pct’):
    return df.sort_values(by=column)[-n:]

tips.groupby(‘smoker’).apply(top)

Out[38]:

total_bill tip smoker day time size tip_pct
smoker
No 88 24.71 5.85 No Thur Lunch 2 0.236746
185 20.69 5.00 No Sun Dinner 5 0.241663
51 10.29 2.60 No Sun Dinner 2 0.252672
149 7.51 2.00 No Thur Lunch 2 0.266312
232 11.61 3.39 No Sat Dinner 2 0.291990
Yes 109 14.31 4.00 Yes Sat Dinner 2 0.279525
183 23.17 6.50 Yes Sun Dinner 4 0.280535
67 3.07 1.00 Yes Sat Dinner 1 0.325733
178 9.60 4.00 Yes Sun Dinner 2 0.416667
172 7.25 5.15 Yes Sun Dinner 2 0.710345
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145590.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Oracle 创建表空间和用户「建议收藏」

    Oracle 创建表空间和用户「建议收藏」文章目录一、创建表空间二、创建用户一、创建表空间表空间?ORACLE数据库的逻辑单元。数据库—表空间:一个表空间可以与多个数据文件(物理结构)关联一个数据库下可以建立多个表空间,一个表空间可以建立多个用户、一个用户下可以建立多个表。创建表空间必须使用具有超级管理员权限的用户,这里就是system下面的Connetas表示连接数据库的身份,一般选择Normal,表示一般的身份,下面两个表示修改数据库的配置,一般是管理员的操作功能选择。(1)打开创建数据库的窗口(2)创建表

  • Scrapy 爬虫框架[通俗易懂]

    Scrapy 爬虫框架[通俗易懂]Scrapy爬虫框架1.概述​ Scrapy是一个可以爬取网站数据,为了提取结构性数据而编写的开源框架。Scrapy的用途非常广泛,不仅可以应用到网络爬虫中,还可以用于数据挖掘、数据监测以及自动化测试等。Scrapy是基于Twisted的异步处理框架,架构清晰、可扩展性强,可以灵活完成各种需求。​ 在Scrapy的工作流程中主要包括以下几个部分:​ §ScrapyEngine(框架的引擎):用于处理整个系统的数据流,触发各种事件,是整个框架的核心。​ §Scheduler(调度器

    2022年10月27日
  • YUI Compressor插件压缩后war中的js/css文件未压缩的解决方法(被maven打包顶替了)

    YUI Compressor插件压缩后war中的js/css文件未压缩的解决方法(被maven打包顶替了)YUICompressorMaven插件可以压缩/合并js或css文件,经常用在Maven项目中,但最近发现在wabapp中执行了mvninstall命令进行发布之后,终端中显示插件已经执行了压缩的动作,但在输出文件夹或者war包中js和css文件都还是未压缩的原始文件。这样执行mvninstall命令之后发现虽然执行了压缩任务,但是在目标目录下和war包中的js和css…

  • 综合应用WPF/WCF/WF/LINQ之二十八:代码生成器之DBMLToInfo

    综合应用WPF/WCF/WF/LINQ之二十八:代码生成器之DBMLToInfo

  • VB.NET数据库编程基础教程

    VB.NET数据库编程基础教程关键词:作者罗姗众所周知,VB.NET自身并不具备对数据库进行操作的功能,它对数据库的处理是通过.NETFrameWorkSDK中面向数据库编程的类库和微软的MDAC来实现的。其中,ADO.NET

  • DejaGnu

    DejaGnu

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号