python数据分析-pandas基础(4)-数据映射apply

简介: apply函数的作用:就是用某个指定的函数f来依次作用于DataFrame或者Series的每个数据,可以指定按行处理和按列处理。

今天我们分享一个非常常用且重要的pandas数据映射函数apply

我们在数据分析过程中,通常需要对原始的数据进行很多转换和处理,比如对于出生日期,我们希望获得年龄的特征;对于身高和体重的数据,我们希望或者BMI指数等等。

这种操作在分析过程是最常用的数据处理,这个过程涉及对一列或者多列数据进行操作。pandas中用apply函数来处理这个过程。

apply函数的作用:就是用某个指定的函数f来依次作用于DataFrame或者Series的每个数据,可以指定按行处理和按列处理。

我们看一个例子:

import pandas as pd
import numpy as np
data_df = pd.DataFrame({'name': ['jack', 'lili', 'abc'],
                      'birthday': ['2001-01-01', '2003-12-01', '2005-09-01'],
                      'height':[1.2, 1.5, 1.6],
                      'weight': [40, 50, 30]})

data_df['age'] = data_df['birthday'].apply(lambda x: (datetime.now().timestamp()-datetime.strptime(x, '%Y-%m-%d').timestamp())//86400/365)

data_df['age'] = data_df['age'].astype(int)

如果是计算逻辑比价简单的,处理逻辑可以通过lambda函数进行处理;比如上面的例子中通过出生日期计算年龄。默认情况下apply传入函数的参数为series(按列),映射函数对每一列的每一行数据执行函数操作。

也可以定义一个函数来代替lambda,如下cal_age代替:


def cal_age(x):
    age_ts = datetime.now().timestamp() - datetime.strptime(x, '%Y-%m-%d').timestamp()
    return age_ts // 86400 / 365

data_df['age'] = data_df['birthday'].apply(cal_age).astype(int)

如果数据处理需要多个数据,比如计算BMI指数需要升高和体重。


def bmi(x):
    return x['weight'] / x['height'] ** 2

data_df['bmi'] = data_df[['height', 'weight']].apply(bmi, axis=1)

从上可知,计算多列数据时,apply传入映射函数的参数为Series,通过axis指定按行还是按列,axis=1为按行,即每一行的多个列的值传入映射行数。以bmi例子,传入的是每个人的身高和体重参数。

apply函数就分享到这,希望对你有帮助。

目录
相关文章
|
15天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
43 0
|
9天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
21 2
|
9天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
18 1
|
10天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
10天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
16天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
30 2
|
22天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
50 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
7天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
7天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
9天前
|
索引 Python
SciPy 空间数据1
SciPy 通过 `scipy.spatial` 模块处理空间数据,如判断点是否在边界内、计算最近点等。三角测量是通过测量角度来确定目标距离的方法。多边形的三角测量可将其分解为多个三角形,用于计算面积。Delaunay 三角剖分是一种常用方法,可以对一系列点进行三角剖分。示例代码展示了如何使用 `Delaunay()` 函数创建三角形并绘制。
18 0