当前位置 博文首页 > jcLee95的博客: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.index | Series的索引(轴标签)。 |
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