- Python pandas教程
- Python Pandas - 主页
- Python Pandas - 简介
- Python Pandas - 环境设置
- 数据结构简介
- Python pandas - 系列
- Python Pandas - 数据帧
- Python Pandas - 面板
- Python Pandas - 基本功能
- 描述性统计
- 功能应用
- Python Pandas - 重新索引
- Python Pandas - 迭代
- Python Pandas - 排序
- 处理文本数据
- 选项和定制
- 索引和选择数据
- 统计功能
- Python Pandas - 窗口函数
- Python Pandas - 聚合
- Python Pandas - 缺失数据
- Python Pandas - GroupBy
- Python Pandas - 合并/连接
- Python Pandas - 连接
- Python Pandas - 日期功能
- Python Pandas - Timedelta
- Python Pandas - 分类数据
- Python Pandas - 可视化
- Python Pandas - IO 工具
- Python Pandas - 稀疏数据
- Python Pandas - 注意事项和陷阱
- 与SQL的比较
- Python Pandas 有用资源
- Python Pandas - 快速指南
- Python Pandas - 有用的资源
- Python Pandas - 讨论
Python Pandas - 函数应用
要将您自己的或其他库的函数应用于 Pandas 对象,您应该了解三个重要的方法。下面讨论了这些方法。使用适当的方法取决于您的函数是否期望对整个 DataFrame 进行操作,按行或按列,还是按元素。
- 表中函数应用:pipe()
- 行或列明智函数应用:apply()
- 逐元素函数应用:applymap()
表式函数应用
可以通过将函数和适当数量的参数作为管道参数传递来执行自定义操作。这样,就对整个DataFrame进行了操作。
例如,为 DataFrame 中的所有元素添加值 2。然后,
加法器功能
加法器函数将两个数值作为参数相加并返回总和。
def adder(ele1,ele2): return ele1+ele2
我们现在将使用自定义函数对DataFrame进行操作。
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.pipe(adder,2)
让我们看看完整的程序 -
import pandas as pd import numpy as np def adder(ele1,ele2): return ele1+ele2 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.pipe(adder,2) print df.apply(np.mean)
其输出如下 -
col1 col2 col3 0 2.176704 2.219691 1.509360 1 2.222378 2.422167 3.953921 2 2.241096 1.135424 2.696432 3 2.355763 0.376672 1.182570 4 2.308743 2.714767 2.130288
行或列明智函数应用程序
可以使用apply()方法沿 DataFrame 或 Panel 的轴应用任意函数,该方法与描述性统计方法一样,采用可选的轴参数。默认情况下,该操作按列执行,将每一列视为类似数组。
实施例1
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.apply(np.mean) print df.apply(np.mean)
其输出如下 -
col1 -0.288022 col2 1.044839 col3 -0.187009 dtype: float64
通过传递axis参数,可以按行进行操作。
实施例2
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.apply(np.mean,axis=1) print df.apply(np.mean)
其输出如下 -
col1 0.034093 col2 -0.152672 col3 -0.229728 dtype: float64
实施例3
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.apply(lambda x: x.max() - x.min()) print df.apply(np.mean)
其输出如下 -
col1 -0.167413 col2 -0.370495 col3 -0.707631 dtype: float64
逐元素函数应用
并非所有函数都可以向量化(返回另一个数组的 NumPy 数组也不是任何值),DataFrame 上的applymap()方法和 Series 上的类似 map()方法接受任何采用单个值并返回单个值的 Python 函数。
实施例1
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) # My custom function df['col1'].map(lambda x:x*100) print df.apply(np.mean)
其输出如下 -
col1 0.480742 col2 0.454185 col3 0.266563 dtype: float64
实施例2
import pandas as pd import numpy as np # My custom function df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.applymap(lambda x:x*100) print df.apply(np.mean)
其输出如下 -
col1 0.395263 col2 0.204418 col3 -0.795188 dtype: float64