当前位置 博文首页 > jcLee95的博客:Danfo.js专题 - Series对象

    jcLee95的博客:Danfo.js专题 - Series对象

    作者:[db:作者] 时间:2021-09-18 15:52

    Danfo.js专题 - Series对象

    (尚未编辑完成)

    编辑中【等待添加实战案例】
    博文地址:https://blog.csdn.net/qq_28550263/article/details/115716277
    提醒博主更新: 291148484@163.com

    3. Series

    Series是带有轴标签的一维数组(包括时间序列)。

    Series(data, {columns: [ Array ], dtypes: [ Array ], index: [Array]}) [source]

    3.1 属性

    属性描述
    Series.indexSeries的索引(轴标签)。
    Series.tensor支持这个数列或索引的Tensorflow tensor 数据。
    Series.dtype返回基础数据的dtype对象。
    Series.shape返回基础数据形状的元组。
    Series.ndim根据定义1的基础数据。
    Series.size返回基础数据中的元素数量。

    详解:

    Series.index
    Series的索引(轴标签)。

    const dfd = require("danfojs-node")
    ?
    let data1 = [30.21091, 40.190901, 3.564, 5.0212]
    let sf1 = new dfd.Series(data1)
    ?
    console.log(sf1.index)
    

    Output

    [ 0, 1, 2, 3 ]
    

    Series.tensor
    Series.tensor 支持这个数列或索引的Tensorflow tensor 数据。

    const dfd = require("danfojs-node")
    ?
    let data1 = [30.21091, 40.190901, 3.564, 5.0212]
    let sf1 = new dfd.Series(data1)
    ?
    console.log(sf1.values)
    

    Output

    const dfd = require("danfojs-node")
    ?
    let data1 = [30.21091, 40.190901, 3.564, 5.0212]
    let sf1 = new dfd.Series(data1)
    ?
    console.log(sf1.values)
    

    Series.dtype
    返回基础数据的dtype对象。

    const dfd = require("danfojs-node")
    
    let data1 = [30.21091, 40.190901, 3.564, 5.0212]
    let sf1 = new dfd.Series(data1)
    
    console.log(sf1.values)
    

    Output

    [ 30.21091, 40.190901, 3.564, 5.0212 ]
    

    Series.shape
    返回基础数据形状的元组。

    const dfd = require("danfojs-node")
    
    let data1 = [30.21091, 40.190901, 3.564, 5.0212]
    let sf1 = new dfd.Series(data1)
    
    console.log(sf1.shape)
    

    Output

    [ 4, 1 ]
    

    Series.ndim
    根据定义1的基础数据。

    const dfd = require("danfojs-node")
    
    let data1 = [30.21091, 40.190901, 3.564, 5.0212]
    let sf1 = new dfd.Series(data1)
    
    console.log(sf1.ndim)
    

    Output

    1
    

    Series.size
    返回基础数据中的元素数量。

    const dfd = require("danfojs-node")
    
    let data1 = [30.21091, 40.190901, 3.564, 5.0212]
    let sf1 = new dfd.Series(data1)
    
    console.log(sf1.ndim)
    

    Output

    4
    

    3.2 转换

    方法描述
    Series.astype将系列对象转换为指定的数据类型。
    Series.copy复制此对象的索引和数据。

    详解:

    Series.astype
    将系列对象转换为指定的数据类型。

    【eg1】将float dtype列转换为int

    const dfd = require("danfojs-node")
    
    let data = { "A": [-20.1, 30, 47.3, -20] ,
                 "B": [34, -4, 5, 6],
                 "C": [20.1, -20.23, 30.3, 40.11],
                 "D": ["a", "b", "c", "c"] }
    
    let df = new dfd.DataFrame(data)
    df.print()
    df.ctypes.print()
    
    let df_new = df.astype({column: "A", dtype: "int32"})
    df_new.print()
    
    df.ctypes.print()
    

    Output

    //before casting
    ╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
    ║   │ A                 │ B                 │ C                 │ D                 ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 0 │ -20.1             │ 34                │ 20.1              │ a                 ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 1 │ 30                │ -4                │ -20.23            │ b                 ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 2 │ 47.3              │ 5                 │ 30.3              │ c                 ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 3 │ -20               │ 6                 │ 40.11             │ c                 ║
    ╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
    
    ╔═══╤══════════════════════╗
    ║   │ 0                    ║
    ╟───┼──────────────────────╢
    ║ A │ float32              ║
    ╟───┼──────────────────────╢
    ║ B │ int32                ║
    ╟───┼──────────────────────╢
    ║ C │ float32              ║
    ╟───┼──────────────────────╢
    ║ D │ string               ║
    ╚═══╧══════════════════════╝
    
    
     //after casting
    
    ╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
    ║   │ A                 │ B                 │ C                 │ D                 ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 0 │ -20               │ 34                │ 20.1              │ a                 ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 1 │ 30                │ -4                │ -20.23            │ b                 ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 2 │ 47                │ 5                 │ 30.3              │ c                 ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 3 │ -20               │ 6                 │ 40.11             │ c                 ║
    ╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
    
    ╔═══╤══════════════════════╗
    ║   │ 0                    ║
    ╟───┼──────────────────────╢
    ║ A │ int32                ║
    ╟───┼──────────────────────╢
    ║ B │ int32                ║
    ╟───┼──────────────────────╢
    ║ C │ float32              ║
    ╟───┼──────────────────────╢
    ║ D │ string               ║
    ╚═══╧══════════════════════╝
    

    【eg2】将string列转换为int

    const dfd = require("danfojs-node")
    
    let data = { "A": [-20.1, 30, 47.3, -20] ,
                 "B": [34, -4, 5, 6],
                 "C": [20.1, -20.23, 30.3, 40.11],
                 "D": ["a", "b", "c", "c"] }
    
    let df = new dfd.DataFrame(data)
    let df_new = df.astype({column: "D", dtype: "int32"})
    df_new.print()
    
    df.ctypes.print()
    
    

    Output

    ╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
    ║   │ A                 │ B                 │ C                 │ D                 ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 0 │ -20.1             │ 34                │ 20.1              │ 20                ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 1 │ 30                │ -4                │ -20.23            │ 13                ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 2 │ 47.3              │ 5                 │ 30.3              │ 45                ║
    ╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
    ║ 3 │ -20               │ 6                 │ 40.11             │ 90                ║
    ╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
    
    ╔═══╤══════════════════════╗
    ║   │ 0                    ║
    ╟───┼──────────────────────╢
    ║ A │ float32              ║
    ╟───┼──────────────────────╢
    ║ B │ int32                ║
    ╟───┼──────────────────────╢
    ║ C │ float32              ║
    ╟───┼──────────────────────╢
    ║ D │ int32                ║
    ╚═══╧══════════════════════╝
    
    

    Series.copy
    复制此对象的索引和数据。

    const dfd = require("danfojs-node")
    
    let data1 = [30.21091, 40.190901, 3.564, 5.0212]
    let sf1 = new dfd.Series(data1)
    let sf2 = sf1.copy()
    
    sf2.print()
    

    Output

    ╔═══╤══════════════════════╗
    ║   │ 0                    ║
    ╟───┼──────────────────────╢
    ║ 0 │ 30.21091             ║
    ╟───┼──────────────────────╢
    ║ 1 │ 40.190901            ║
    ╟───┼──────────────────────╢
    ║ 2 │ 3.564                ║
    ╟───┼──────────────────────╢
    ║ 3 │ 5.0212               ║
    ╚═══╧══════════════════════╝
    

    3.3 索引、迭代

    方法描述
    Series.loc通过标签或布尔数组访问一组行和列。
    Series.iloc完全基于整数位置的索引,用于按位置选择。

    详解:

    Series.loc
    通过标签或布尔数组访问一组行和列。

    const dfd = require("danfojs-node")
    ?
    let data = { "Name": ["Apples", "Mango", "Banana", "Pear"],
                "Count": [21, 5, 30, 10],
                "Price": [200, 300, 40, 250] }
    ?
    let df = new dfd.DataFrame(data, {index: ["a", "b", "c", "d"]})
    df.print()
    let sub_df = df.loc({rows: ["a", "c"]})
    sub_df.print