• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解pandas映射与数据转换

    在 pandas 中提供了利用映射关系来实现某些操作的函数,具体如下:

    一、replace() 用映射替换元素

    在数据处理时,经常会遇到需要将数据结构中原来的元素根据实际需求替换成新元素的情况。要想用新元素替换原来元素,就需要定义一组映射关系。在映射关系中,将旧元素作为键,新元素作为值。

    例如,创建字典 fruits 用于指明水果标识和水果名称的映射关系。

    fruits={101:'orange',102:'apple',103:'banana'}

    如要将用于存储水果标识、水果数量和单价的 DataFrame 对象中的水果标识替换成水果名称,就需要运用 replace() 函数,通过 fruits 映射关系来实现元素的替换。

    replace() 函数的基本语法格式如下:

    obj.replace(to_replace=None,value=None,inplace=False,limit=None,regex=
    False,method='pad')

    函数中的参数说明如下:

    【例 1】利用 replace() 函数和映射关系实现将水果数据框中水果标识替换成水果名称。
    示例代码 test1.py 如下:

    import numpy as np
    import pandas as pd
    #创建水果标识与水果名称的映射关系
    fruits = {101:'orange',102:'apple',103:'banana'}
    #创建水果数据框DataFrame
    data = pd.DataFrame({'fru_No':[101,102,103]          ,'fru_Num':[1000,2000,3000]
              ,'price':[3.56,4.2,2.5]})
    #用映射替换fru_No列的元素
    newDf = data.replace(fruits)
    print(newDf)
    #输出如下
     fru_No fru_Num price
    0 orange  1000  3.56
    1 apple  2000  4.20
    2 banana  3000  2.50

    replace() 函数应用的示例代码 example1.py 如下:

    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    s = Series([-1000,-999,2,3,4,5,-2000])
    #单数值替换
    print(s.replace(-2000,np.nan))
    0 -1000.0
    1 -999.0
    2 2.0
    3 3.0
    4 4.0
    5 5.0
    6 NaN
    
    #将多个数值替换
    print(s.replace([-1000,-999],0))
    0 0
    1 0
    2 2
    3 3
    4 4
    5 5
    6 -2000
    
    #不同的值进行不同的替换
    print(s.replace([-1000,-999],[np.nan,0]))
    0 NaN
    1 0.0
    2 2.0
    3 3.0
    4 4.0
    5 5.0
    6 -2000.0
    
    #用字典方式进行不同的替换
    print(s.replace({-1000:np.nan,-999:0,-2000:np.nan}))
    0 NaN
    1 0.0
    2 2.0
    3 3.0
    4 4.0
    5 5.0
    6 NaN

    二、用映射添加元素

       在【例 1】中介绍了利用函数和映射来实现将水果标识替换成水果名称的方法。但是有时需要保留水果标识,将水果名称添加到数据集中。

       那么,这时可利用 map() 函数,通过构建 fruits 映射关系来实现元素的添加。

    map() 函数是作用于 Series 或 DataFrame 对象的一列,它接收一个函数或表示映射关系的字典作为参数,它的基本语法格式如下:

    Series.map(arg,na_action=None)

    函数中的参数说明如下:

    【例 2】利用 map() 函数和映射关系实现将水果名称添加到水果数据框中。
    示例代码 test2.py 如下:

    import pandas as pd
    #创建水果标识与水果名称的映射关系
    fruits = {101:'orange',102:'apple',103:'banana'}
    #创建水果数据框DataFrame
    data = pd.DataFrame({'fru_No':[101,102,103],'fru_Num':[1000,2000,3000],'price':
              [3.56,4.2,2.5]})
    #用映射为data添加fru_name列元素
    data['fru_name'] = data['fru_No'].map(fruits)
    print(data)
     fru_No fru_Num price fru_name
    0 101  1000  3.56 orange
    1 102  2000  4.20 apple
    2 103  3000  2.50 banana

    三、重命名行/列索引

    在数据处理中,有时需要使用映射关系转换轴标签。pandas 的 rename() 函数是以表示映射关系的字典对象作为参数,替换轴的索引标签。
    rename() 函数的基本语法格式如下:

    DataFrame.rename(mapper=None,index=None,columns=None,axis=None,copy=True,
    inplace=False,level=None)
    或
    Series.rename(index=None,**kwargs)

    函数中的参数说明如下:

    rename() 函数返回值是 DataFrame 或 Series。
    【例 3】利用 rename() 函数和映射关系重命名水果数据框的行索引和列索引。
    示例代码 test3.py 如下:

    import pandas as pd
    #创建行索引的映射关系
    reindex = {0:'row1',1:'row2',2:'row3'}
    #创建水果数据框DataFrame
    data = pd.DataFrame({'fru_No':[101,102,103],'fru_Num':[1000,2000,3000],'price':
              [3.56,4.2,2.5]})
     fru_No fru_Num price
    0  101 1000  3.56
    1  102 2000  4.20
    2  103 3000  2.50
    
    #用映射重命名水果数据框的行索引,产生新DataFrame,但原数据不改变
    newDf = data.rename(reindex)
    print(newDf)
      fru_No fru_Num price
    row1 101  1000  3.56
    row2 102  2000  4.20
    row3 103  3000  2.50
    
    #用映射重命名水果数据框的行索引,产生新DataFrame,但原数据改变
    newDf = data.rename(reindex,inplace=True)
    print(newDf) #newDf是None,data原数据改变
    #创建列索引的映射关系
    recolumns = {'fru_No':'col1','fru_Num':'col2','price':'col3'}
    #用映射重命名水果数据框中的行索引和列索引
    newDf = data.rename(index=reindex,columns=recolumns)
    print(newDf)
      col1 col2 col3
    row1 101 1000 3.56
    row2 102 2000 4.20
    row3 103 3000 2.50
    
    #用映射重命名水果数据框的单个行索引和单个列索引
    newDf = data.rename(index={'row2':'s1'},columns={'fru_No':'111'})
    print(newDf)
       111 fru_Num price
    row1 101 1000  3.56
    s1  102 2000  4.20
    row3 103 3000  2.50

    注意:rename() 函数返回一个经过改动的新 DataFrame 对象,但原 DataFrame 对象仍保持不变,如果要改变调用函数的对象本身,可使用 inplace 选项,并将其值设置为 True。

    以上就是详解pandas映射与数据转换的详细内容,更多关于pandas映射与数据转换的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • 利用pandas将非数值数据转换成数值的方式
    • pandas 数据类型转换的实现
    • Pandas将列表(List)转换为数据框(Dataframe)
    • pandas进行时间数据的转换和计算时间差并提取年月日
    • Pandas实现数据类型转换的一些小技巧汇总
    • pandas 取出表中一列数据所有的值并转换为array类型的方法
    上一篇:python实现简单的井字棋游戏(gui界面)
    下一篇:如何使用Python进行PDF图片识别OCR
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解pandas映射与数据转换 详解,pandas,映射,与,数据,