【Pandas-05】转换函数map、apply、applymap、日期数据、日期索引缺失

一、数据转换函数mapapplyapplymap

数据转换函数对比:map、apply、applymap:

  • map:只用于Series,实现每个值->值的映射;
  • apply:用于Series实现每个值的处理,用于Dataframe实现某个轴的Series的处理;
  • applymap:只能用于DataFrame,用于处理该DataFrame的每个元素;

数据集:

1 map用于Series值的转换

实例:将股票代码英文转换成中文名字

Series.map(dict) or Series.map(function)均可

方法1:Series.map(dict)

方法2:Series.map(function)

function的参数是Series的每个元素的值

注意:也可以通过函数来进行替换。

2 apply用于SeriesDataFrame的转换

  • Series.apply(function), 函数的参数是每个值
  • DataFrame.apply(function), 函数的参数是Series

Series.apply(function)

function的参数是Series的每个值

DataFrame.apply(function)

function的参数是对应轴的Series

再举个例子

import pandas as pd

路径 = 'c:/pandas/数据.xlsx'

数据 = pd.read_excel(路径)

def BMI(数据):

身高 = 数据['身高']

体重 = 数据['体重']

BMI = 体重/身高 **2

return BMI

数据['BMI'] = 数据.apply(BMI,axis=1)

print(数据)

3 applymap用于DataFrame所有值的转换

它的用法非常简单,会对DataFrame中的每个单元格执行指定函数的操作,虽然用途不如apply广泛,但在某些场合下还是比较有用:

二、对每个分组应用apply函数

1 怎样对数值列按分组的归一化

数据集合:

2 怎样取每个分组的TOPN数据?

三、日期数据

处理日期数据

Pandas日期处理的作用:将2018-01-01、1/1/2018等多种日期格式映射成统一的格式对象,在该对象上提供强大的功能支持

几个概念:

  1. pd.to_datetime:pandas的一个函数,能将字符串、列表、series变成日期形式
  2. Timestamp:pandas表示日期的对象形式
  3. DatetimeIndex:pandas表示日期的对象列表形式

其中:

  • DatetimeIndex是Timestamp的列表形式
  • pd.to_datetime对单个日期字符串处理会得到Timestamp
  • pd.to_datetime对日期字符串列表处理会得到DatetimeIndex

问题:怎样统计每周、每月、每季度的最高温度?数据如下:

1 将日期列转换成pandas的日期

2 方便的对DatetimeIndex进行查询

按照年份也类似:df.loc["2018"].head()

3 方便的获取周、月、季度

4 统计每周、每月、每个季度的最高温度

四、日期索引的缺失

可以用两种方法实现:

1DataFrame.reindex,调整dataframe的索引以适应新的索引

2DataFrame.resample,可以对时间序列重采样,支持补充缺失值

数据:

方法1:使用pandas.reindex方法

1、将df的索引变成日期索引

2、使用pandas.reindex填充缺失的索引

或以下生成日期序列:

方法2:使用pandas.resample方法

1、先将索引变成日期索引

2、使用dataframe的resample的方法按照天重采样

resample的含义:

改变数据的时间频率,比如把天数据变成月份,或者把小时数据变成分钟级别

   

resample的语法:

(DataFrame or Series).resample(arguments).(aggregate function)

   

resample的采样规则参数:

https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#offset-aliases

参考文献

Series.str字符串方法列表:https://pandas.pydata.org/pandas-docs/stable/reference/series.html#string-handling

   

posted @ 2021-04-14 20:42  忆凡人生  阅读(572)  评论(0编辑  收藏  举报