pandas的apply() | map() | applymap()的使用

文章目录

    • 简述
    • 示例展示
      • apply方法:
      • map方法:
      • applymap方法:
    • 总结

简述

pandas中的applymapapplymap都是利用lambda函数对DataFrame中的数据进行处理,几个方法之间的异同如下:

  1. pandas的两种数据结构即dataframeseries 中都可以使用apply方法,dataframe中的apply方法需要指定axis参数(axis默认为0即使用lambda x 之后的x为按列索引获取的series),可以使用聚合函数求得每一列中的最大值max、最小值min、均值mean、计数count、求和sum等,series中的apply方法与map方法一样,都是作用于单个元素,可以对单个元素进行处理,注意此处不可以进行聚合处理,因为其作用对象为单个元素;
  2. series中使用apply(lambda x: func(x))即对该series中的每一个元素进行函数func(x) 处理;
  3. series中使用map(map_dic)即对该series中的每一个元素进行字典映射(map_dic)处理;
  4. dataframe中使用applymap(lambda x:func(x))即对dataframe中的每一个元素进行函数func(x)处理。

示例展示

apply方法:

1.dataframe使用apply方法:

import pandas as pd
df = pd.DataFrame({'a':[5,8,3], 'b':[8,3,4], 'c':[6,2,7]})
result_se = df.apply(lambda x:sum(x))

result_se输出结果:
pandas的apply() | map() | applymap()的使用_第1张图片
根据输出结果result_se可以看出,在对dataframe使用apply方法后返回一个series,返回后的series以dataframe的列明为索引。
2.series使用apply方法:

import pandas as pd
df = pd.DataFrame({'a':[5,8,3], 'b':[8,3,4], 'c':[6,2,7]})
result_se = df.a.apply(lambda x:1 if x>5 else 0)

result_se输出结果:
pandas的apply() | map() | applymap()的使用_第2张图片
根据输出结果可以看出,在对series使用apply方法后返回的结果为对series中每一个元素使用func后的对应值构成的series,返回后的series的索引没有发生改变。

map方法:

1.series使用map方法:

import pandas as pd
df = pd.DataFrame({'a':[5,8,3], 'b':[8,3,4], 'c':[6,2,7]})
map_dic = {8:'八', 3:'三', 4:'四'}
result_se = df.b.map(map_dic)

result_se输出结果:
pandas的apply() | map() | applymap()的使用_第3张图片
根据输出结果可以看出,在对series使用map方法后返回的结果为对series中每一个元素使用map字典映射后的对应值构成的series,返回后的series的索引没有发生改变。

applymap方法:

1.dataframe使用applymap方法:

import pandas as pd
df = pd.DataFrame({'a':[5,8,3], 'b':[8,3,4], 'c':[6,2,7]})
result_df = df.applymap(lambda x:1 if x>5 else 0)

result_df输出结果:
pandas的apply() | map() | applymap()的使用_第4张图片
根据输出结果可以看出,在对dataframe使用applymap方法后返回的结果为对dataframe中每一个元素使用func后的对应值构成的dataframe,返回后的dataframe的列名及索引均没有发生改变。

总结

1.apply:不论是对dataframe还是series使用apply方法,返回结果均为series,dataframe使用apply方法相当于dataframe根据行或者列进行聚合;series使用apply方法目的是对series中的每个元素进行根据需求进行func处理;
2.map:map方法只能对用于series,其目的是对series中每个元素进行map映射处理;
3.applymap:applymap方法只能对用于dataframe,其目的是对dataframe中每个元素根据需求进行func处理。

【1】:https://pandas.pydata.org/

你可能感兴趣的:(pandas,python,数据分析)