zoukankan      html  css  js  c++  java
  • 【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

       

  • 相关阅读:
    Linux安装Oracle 10g
    Linux安装Oracle 10g
    如何利用BI实现人力资源可视化管理
    mongdb修改密码
    如何利用BI实现人力资源可视化管理
    jquery获取浏览器和屏幕的高度和宽度
    perl概述
    'CheckLicensesAndNotify' has encountered a problem.
    Caused by: java.sql.SQLException: The MySQL server is running with the --read-only option so it cann
    Caused by: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Tim
  • 原文地址:https://www.cnblogs.com/yifanrensheng/p/14659799.html
Copyright © 2011-2022 走看看