jcLee95 的 CSDN 博客
邮箱 :291148484@163.com
CSDN 主页:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343
本文地址:https://blog.csdn.net/qq_28550263/article/details/115716277
编辑中【等待添加实战案例】
博文地址:https://blog.csdn.net/qq_28550263/article/details/115716277
提醒博主更新: 291148484@163.com
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()
Output
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╗
║ │ Name │ Count │ Price ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ a │ Apples │ 21 │ 200 ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ b │ Mango │ 5 │ 300 ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ c │ Banana │ 30 │ 40 ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ d │ Pear │ 10 │ 250 ║
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╝
Shape: (2,3)
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╗
║ │ Name │ Count │ Price ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ a │ Apples │ 21 │ 200 ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ c │ Banana │ 30 │ 40 ║
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╝
- 完全基于整数位置的索引,用于按位置选择。
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({columns: ["Count", "Price"]})
sub_df.print()
Output
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╗
║ │ Name │ Count │ Price ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ a │ Apples │ 21 │ 200 ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ b │ Mango │ 5 │ 300 ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ c │ Banana │ 30 │ 40 ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ d │ Pear │ 10 │ 250 ║
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╝
//after slicing
╔═══╤═══════════════════╤═══════════════════╗
║ │ Count │ Price ║
╟───┼───────────────────┼───────────────────╢
║ a │ 21 │ 200 ║
╟───┼───────────────────┼───────────────────╢
║ b │ 5 │ 300 ║
╟───┼───────────────────┼───────────────────╢
║ c │ 30 │ 40 ║
╟───┼───────────────────┼───────────────────╢
║ d │ 10 │ 250 ║
╚═══╧═══════════════════╧═══════════════════╝
- 通过指定的标签索引两个轴
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: ["c","d"], columns: ["Name", "Price"] })
sub_df.print()
Output
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╗
║ │ Name │ Count │ Price ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ a │ Apples │ 21 │ 200 ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ b │ Mango │ 5 │ 300 ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ c │ Banana │ 30 │ 40 ║
╟───┼───────────────────┼───────────────────┼───────────────────╢
║ d │ Pear │ 10 │ 250 ║
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╝
//after slicing
╔═══╤═══════════════════╤═══════════════════╗
║ │ Name │ Price ║
╟───┼───────────────────┼───────────────────╢
║ c │ Banana │ 40 ║
╟───┼───────────────────┼───────────────────╢
║ d │ Pear │ 250 ║
╚═══╧═══════════════════╧═══════════════════╝
- 通过索引对特定行进行索引
const dfd = require("danfojs-node")
// const tf = require("@tensorflow/tfjs-node")
let s = new dfd.Series([12, 34, 2.2, 2, 30, 30, 2.1, 7])
s.iloc([0,5]).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 12 ║
╟───┼──────────────────────╢
║ 5 │ 30 ║
╚═══╧══════════════════════╝
- 按行切片索引
iloc函数还接受[开始:结束]形式的字符串片段,例如“[1: 4]”。这将返回索引位置1和3之间的所有值。
const dfd = require("danfojs-node")
let s = new dfd.Series([12, 34, 2.2, 2, 30, 30, 2.1, 7])
s.iloc(["0:5"]).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 12 ║
╟───┼──────────────────────╢
║ 1 │ 34 ║
╟───┼──────────────────────╢
║ 2 │ 2.2 ║
╟───┼──────────────────────╢
║ 3 │ 2 ║
╟───┼──────────────────────╢
║ 4 │ 30 ║
╚═══╧══════════════════════╝
通过在切片中指定起始索引,将返回该索引之后的所有值。
const dfd = require("danfojs-node")
let s = new dfd.Series([12, 34, 2.2, 2, 30, 30, 2.1, 7])
s.iloc(["5:"]).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 5 │ 30 ║
╟───┼──────────────────────╢
║ 6 │ 2.1 ║
╟───┼──────────────────────╢
║ 7 │ 7 ║
╚═══╧══════════════════════╝
3.4 二进制操作函数
方法 | 描述 |
---|---|
Series.add | 按元素返回系列和其他的加法(二元运算符加法)。 |
Series.sub | 数列和其他元素的返回减法(二元运算符sub)。 |
Series.mul | 按元素返回系列和其他的乘法(二元运算符mul)。 |
Series.div | 返回数列和其他元素的浮点除法(二元运算符truediv)。 |
Series.mod | 按元素返回系列和其他的模(二进制运算符模)。 |
Series.pow | 返回级数和其他元素指数幂(二元运算符幂)。 |
Series.round | 将数列中的每个值四舍五入到给定的小数位数。 |
Series.lt | 按元素返回小于系列和其他(二元运算符lt)。 |
Series.gt | 按元素返回大于系列和其他(二元运算符gt)。 |
Series.le | 按元素返回小于或等于系列和其他的(二元运算符le)。 |
Series.ge | 按元素返回大于或等于系列和其他的(二元运算符ge)。 |
Series.ne | 返回不等于系列和其他元素(二元运算符ne)。 |
Series.eq | 按元素返回等于系列和其他(二元运算符eq)。 |
Series.dot | 计算数列和其他列之间的点积。 |
详解:
Series.add
从另一Series的值中减去
const dfd = require("danfojs-node")
let data1 = [30, 40, 3, 5]
let data2 = [1, 2, 3, 4]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.add(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 31 ║
╟───┼──────────────────────╢
║ 1 │ 42 ║
╟───┼──────────────────────╢
║ 2 │ 6 ║
╟───┼──────────────────────╢
║ 3 │ 9 ║
╚═══╧══════════════════════╝
从数值中减去
const dfd = require("danfojs-node")
let data1 = [1, 2, 3, 4, 5]
let sf1 = new dfd.Series(data1)
sf1.add(2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 3 ║
╟───┼──────────────────────╢
║ 1 │ 4 ║
╟───┼──────────────────────╢
║ 2 │ 5 ║
╟───┼──────────────────────╢
║ 3 │ 6 ║
╟───┼──────────────────────╢
║ 4 │ 7 ║
╚═══╧══════════════════════╝
Series.sub
从另一series的值中减去
const dfd = require("danfojs-node")
let data1 = [30, 40, 3, 5]
let data2 = [1, 2, 3, 4]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.sub(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 29 ║
╟───┼──────────────────────╢
║ 1 │ 38 ║
╟───┼──────────────────────╢
║ 2 │ 0 ║
╟───┼──────────────────────╢
║ 3 │ 1 ║
╚═══╧══════════════════════╝
从数值中减去
const dfd = require("danfojs-node")
let data1 = [1, 2, 3, 4, 5]
let sf1 = new dfd.Series(data1)
sf1.sub(2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ -1 ║
╟───┼──────────────────────╢
║ 1 │ 0 ║
╟───┼──────────────────────╢
║ 2 │ 1 ║
╟───┼──────────────────────╢
║ 3 │ 2 ║
╟───┼──────────────────────╢
║ 4 │ 3 ║
╚═══╧══════════════════════╝
Series.mul
与另一系列值相乘
const dfd = require("danfojs-node")
let data1 = [30, 40, 3, 5]
let data2 = [1, 2, 3, 4]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.mul(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 30 ║
╟───┼──────────────────────╢
║ 1 │ 80 ║
╟───┼──────────────────────╢
║ 2 │ 9 ║
╟───┼──────────────────────╢
║ 3 │ 20 ║
╚═══╧══════════════════════╝
与一个值相乘
const dfd = require("danfojs-node")
let data1 = [1, 2, 3, 4, 5]
let sf1 = new dfd.Series(data1)
sf1.mul(2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 2 ║
╟───┼──────────────────────╢
║ 1 │ 4 ║
╟───┼──────────────────────╢
║ 2 │ 6 ║
╟───┼──────────────────────╢
║ 3 │ 8 ║
╟───┼──────────────────────╢
║ 4 │ 10 ║
╚═══╧══════════════════════╝
Series.div
用另一series的值除
const dfd = require("danfojs-node")
let data1 = [30, 40, 3, 5]
let data2 = [1, 2, 3, 4]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.div(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 30 ║
╟───┼──────────────────────╢
║ 1 │ 20 ║
╟───┼──────────────────────╢
║ 2 │ 1 ║
╟───┼──────────────────────╢
║ 3 │ 1.25 ║
╚═══╧══════════════════════╝
用一个值除
const dfd = require("danfojs-node")
let data1 = [1, 2, 3, 4, 5]
let sf1 = new dfd.Series(data1)
sf1.div(2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 0.5 ║
╟───┼──────────────────────╢
║ 1 │ 1 ║
╟───┼──────────────────────╢
║ 2 │ 1.5 ║
╟───┼──────────────────────╢
║ 3 │ 2 ║
╟───┼──────────────────────╢
║ 4 │ 2.5 ║
╚═══╧══════════════════════╝
Series.mod
另一series值的模
const dfd = require("danfojs-node")
let data1 = [2, 30, 4, 5]
let data2 = [1.1, 2.2, 3.3, 2.4]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.mod(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 0.8999999761581421 ║
╟───┼──────────────────────╢
║ 1 │ 1.3999993801116943 ║
╟───┼──────────────────────╢
║ 2 │ 0.7000000476837158 ║
╟───┼──────────────────────╢
║ 3 │ 0.19999980926513672 ║
╚═══╧══════════════════════╝
以值为模
const dfd = require("danfojs-node")
let data1 = [1, 2, 3, 4, 5]
let sf1 = new dfd.Series(data1)
sf1.mod(2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 1 ║
╟───┼──────────────────────╢
║ 1 │ 0 ║
╟───┼──────────────────────╢
║ 2 │ 1 ║
╟───┼──────────────────────╢
║ 3 │ 0 ║
╟───┼──────────────────────╢
║ 4 │ 1 ║
╚═══╧══════════════════════╝
Series.pow
另一series数值的指数幂
const dfd = require("danfojs-node")
let data1 = [2, 3, 4, 5]
let data2 = [1, 2, 3, 0]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.pow(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 2 ║
╟───┼──────────────────────╢
║ 1 │ 9 ║
╟───┼──────────────────────╢
║ 2 │ 64 ║
╟───┼──────────────────────╢
║ 3 │ 1 ║
╚═══╧══════════════════════╝
有值的指数值
const dfd = require("danfojs-node")
let data1 = [1, 2, 3, 4, 5]
let sf1 = new dfd.Series(data1)
sf1.pow(2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 1 ║
╟───┼──────────────────────╢
║ 1 │ 4 ║
╟───┼──────────────────────╢
║ 2 │ 9 ║
╟───┼──────────────────────╢
║ 3 │ 16 ║
╟───┼──────────────────────╢
║ 4 │ 25 ║
╚═══╧══════════════════════╝
const dfd = require("danfojs-node")
let data1 = [30.21091, 40.190901, 3.564, 5.0212]
let sf1 = new dfd.Series(data1)
sf1.round(2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 30.21 ║
╟───┼──────────────────────╢
║ 1 │ 40.19 ║
╟───┼──────────────────────╢
║ 2 │ 3.56 ║
╟───┼──────────────────────╢
║ 3 │ 5.02 ║
╚═══╧══════════════════════╝
Series.lt
检查series 中的所有值是否都小于一个值
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let sf1 = new dfd.Series(data1)
sf1.lt(20).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ false ║
╟───┼──────────────────────╢
║ 1 │ true ║
╟───┼──────────────────────╢
║ 2 │ true ║
╟───┼──────────────────────╢
║ 3 │ true ║
╟───┼──────────────────────╢
║ 4 │ true ║
╟───┼──────────────────────╢
║ 5 │ false ║
╟───┼──────────────────────╢
║ 6 │ false ║
╚═══╧══════════════════════╝
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let data2 = [10, 450, 56, 5, 25, 2, 0]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.lt(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ false ║
╟───┼──────────────────────╢
║ 1 │ true ║
╟───┼──────────────────────╢
║ 2 │ false ║
╟───┼──────────────────────╢
║ 3 │ false ║
╟───┼──────────────────────╢
║ 4 │ true ║
╟───┼──────────────────────╢
║ 5 │ false ║
╟───┼──────────────────────╢
║ 6 │ false ║
╚═══╧══════════════════════╝
检查一个series中的所有值是否小于另一个series中的值。
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let data2 = [10, 450, 56, 5, 25, 2, 0]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.lt(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ false ║
╟───┼──────────────────────╢
║ 1 │ true ║
╟───┼──────────────────────╢
║ 2 │ false ║
╟───┼──────────────────────╢
║ 3 │ false ║
╟───┼──────────────────────╢
║ 4 │ true ║
╟───┼──────────────────────╢
║ 5 │ false ║
╟───┼──────────────────────╢
║ 6 │ false ║
╚═══╧══════════════════════╝
Series.gt
检查series 中的所有值是否都大于一个值
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let sf1 = new dfd.Series(data1)
sf1.gt(20).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ false ║
╟───┼──────────────────────╢
║ 1 │ true ║
╟───┼──────────────────────╢
║ 2 │ true ║
╟───┼──────────────────────╢
║ 3 │ true ║
╟───┼──────────────────────╢
║ 4 │ true ║
╟───┼──────────────────────╢
║ 5 │ false ║
╟───┼──────────────────────╢
║ 6 │ false ║
╚═══╧══════════════════════╝
检查一个series 中的所有值是否大于另一个series 中的值。
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let data2 = [10, 450, 56, 5, 25, 2, 0]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.gt(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ false ║
╟───┼──────────────────────╢
║ 1 │ false ║
╟───┼──────────────────────╢
║ 2 │ false ║
╟───┼──────────────────────╢
║ 3 │ true ║
╟───┼──────────────────────╢
║ 4 │ false ║
╟───┼──────────────────────╢
║ 5 │ true ║
╟───┼──────────────────────╢
║ 6 │ true ║
╚═══╧══════════════════════╝
Series.le
检查series中的所有值是否都小于或等于一个值
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let sf1 = new dfd.Series(data1)
sf1.le(20).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ true ║
╟───┼──────────────────────╢
║ 1 │ false ║
╟───┼──────────────────────╢
║ 2 │ false ║
╟───┼──────────────────────╢
║ 3 │ false ║
╟───┼──────────────────────╢
║ 4 │ false ║
╟───┼──────────────────────╢
║ 5 │ true ║
╟───┼──────────────────────╢
║ 6 │ true ║
╚═══╧══════════════════════╝
检查一个series中的所有值是否小于或等于另一个series中的值。
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let data2 = [10, 450, 56, 5, 25, 2, 0]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.le(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ true ║
╟───┼──────────────────────╢
║ 1 │ true ║
╟───┼──────────────────────╢
║ 2 │ true ║
╟───┼──────────────────────╢
║ 3 │ false ║
╟───┼──────────────────────╢
║ 4 │ true ║
╟───┼──────────────────────╢
║ 5 │ false ║
╟───┼──────────────────────╢
║ 6 │ false ║
╚═══╧══════════════════════╝
Series.ge
将一个序列中的所有值与另一个series中的值进行比较
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let data2 = [10, 450, 56, 5, 25, 2, 0]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.ge(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ true ║
╟───┼──────────────────────╢
║ 1 │ false ║
╟───┼──────────────────────╢
║ 2 │ true ║
╟───┼──────────────────────╢
║ 3 │ true ║
╟───┼──────────────────────╢
║ 4 │ false ║
╟───┼──────────────────────╢
║ 5 │ true ║
╟───┼──────────────────────╢
║ 6 │ true ║
╚═══╧══════════════════════╝
检查Series 中的所有值是否都大于或等于一个值。
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let sf1 = new dfd.Series(data1)
sf1.ge(20).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ false ║
╟───┼──────────────────────╢
║ 1 │ true ║
╟───┼──────────────────────╢
║ 2 │ true ║
╟───┼──────────────────────╢
║ 3 │ true ║
╟───┼──────────────────────╢
║ 4 │ true ║
╟───┼──────────────────────╢
║ 5 │ true ║
╟───┼──────────────────────╢
║ 6 │ false ║
╚═══╧══════════════════════╝
Series.ne
将一个series 中的所有值与另一个series 中的值进行比较
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let data2 = [10, 450, 56, 5, 25, 2, 0]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.ne(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ false ║
╟───┼──────────────────────╢
║ 1 │ true ║
╟───┼──────────────────────╢
║ 2 │ false ║
╟───┼──────────────────────╢
║ 3 │ true ║
╟───┼──────────────────────╢
║ 4 │ true ║
╟───┼──────────────────────╢
║ 5 │ true ║
╟───┼──────────────────────╢
║ 6 │ true ║
╚═══╧══════════════════════╝
将Series 中的所有值与一个值进行比较。
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let sf1 = new dfd.Series(data1)
sf1.ne(10).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ false ║
╟───┼──────────────────────╢
║ 1 │ true ║
╟───┼──────────────────────╢
║ 2 │ true ║
╟───┼──────────────────────╢
║ 3 │ true ║
╟───┼──────────────────────╢
║ 4 │ true ║
╟───┼──────────────────────╢
║ 5 │ true ║
╟───┼──────────────────────╢
║ 6 │ false ║
╚═══╧══════════════════════╝
Series.eq
将一个series中的所有值与另一个series进行比较
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let data2 = [10, 450, 56, 5, 25, 2, 0]
let sf1 = new dfd.Series(data1)
let sf2 = new dfd.Series(data2)
sf1.eq(sf2).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ true ║
╟───┼──────────────────────╢
║ 1 │ false ║
╟───┼──────────────────────╢
║ 2 │ true ║
╟───┼──────────────────────╢
║ 3 │ false ║
╟───┼──────────────────────╢
║ 4 │ false ║
╟───┼──────────────────────╢
║ 5 │ false ║
╟───┼──────────────────────╢
║ 6 │ false ║
╚═══╧══════════════════════╝
检查所有值是否等于一个值
const dfd = require("danfojs-node")
let data1 = [10, 45, 56, 25, 23, 20, 10]
let sf1 = new dfd.Series(data1)
sf1.eq(10).print()
Output
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ true ║
╟───┼──────────────────────╢
║ 1 │ false ║
╟───┼──────────────────────╢
║ 2 │ false ║
╟───┼──────────────────────╢
║ 3 │ false ║
╟───┼──────────────────────╢
║ 4 │ false ║
╟───┼──────────────────────╢
║ 5 │ false ║
╟───┼──────────────────────╢
║ 6 │ true ║
╚═══╧══════════════════════╝
Output
Output
3.5 Function application & GroupBy
方法 | 描述 |
---|---|
Series.apply | 对数列的值调用函数。 |
Series.map | 根据输入的对应关系映射系列的值。 |
详解:
3.6 Computations / descriptive stats
方法 | 描述 |
---|---|
Series.abs | 返回包含每个元素的绝对数值的Series 。 |
Series.corr | 计算与其他Series的相关性,不包括缺失值。 |
Series.count | 返回系列中非NaN观测值的数目。 |
Series.cummax | 返回DataFrame或Series轴上的累积最大值。 |
Series.cummin | 返回DataFrame或Series轴上的累积最小值。 |
Series.cumprod | 返回DataFrame或Series轴上的累计乘积。 |
Series.cumsum | 返回DataFrame或Series轴上的累计总和。 |
Series.describe | 生成描述性统计数据。 |
Series.max | 返回所请求轴的最大值。 |
Series.mean | 返回所请求轴的平均值。 |
Series.median | 返回所请求轴的值的中间值。 |
Series.min | 返回所请求轴的最小值。 |
Series.mode | 返回数据集的模式。 |
Series.std | 返回要求轴上的样本标准偏差。 |
Series.sum | 返回所请求轴的值的总和。 |
Series.var | 返回指定轴上的无偏方差。 |
Series.unique | 返回Series对象中的唯一值. |
Series.nunique | 返回对象中唯一元素的数量。 |
Series.value_counts | 返回包含唯一值计数的序列。 |
详解:
3.7 重新索引(Reindexing) / 选择/ 标签操作
方法 | 描述 |
---|---|
Series.drop_duplicates | 移除重复值后返回序列。 |
Series.head | 返回前n行。 |
Series.reset_index | 在重置索引的情况下生成新的DataFrame或Series。 |
Series.sample | 从对象的轴返回项目的随机样本。 |
Series.tail | 返回最后n行。 |
3.8 数据缺失处理
方法 | 描述 |
---|---|
Series.dropna | 返回一个新系列,并删除缺失的值。 |
Series.fillna | 使用指定的方法填充 NaN 值。 |
Series.isna | 检测缺失值。 |
Series.replace | 用值替换to_replace中给出的值。 |
详解:
3.9 再成形(reshape), 排序
方法 | 描述 |
---|---|
Series.argsort | 返回将对序列值进行排序的整数索引。 |
Series.argmin | 返回序列中最小值的整数位置。 |
Series.argmax | 返回序列中最大值的整数位置。 |
Series.sort_values | 按值排序。 |
详解:
3.10 访问器
Danfo在各种访问器下提供特定于数据类型的方法。这些是Series
内单独的命名空间(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html#pandas.Series),仅适用于特定的数据类型。
数据类型 | 访问器 |
---|---|
Datetime | dt |
String | str |
Datetimelike 属性
Series.dt
可用于以datetime形式访问系列的值,并返回几个属性。这些可以通过以下方式访问如 Series.dt.<property>
.
Datetime 方法
方法 | 描述 |
---|---|
Series.dt.year | datetime中的年份。 |
Series.dt.month | 月份,例如 January=1, December=12。 |
Series.dt.day | datetime中的日。 |
Series.dt.hour | datetime中的时。 |
Series.dt.minute | datetime中的分钟。 |
Series.dt.second | datetime中的秒 |
Series.dt.weekdays | 一周中的某天,使用 (周一)Monday=0, (周日)Sunday=6. |
Series.dt.month_name | 返回指定区域设置的日期时间索引的月份名称 |
详解:
字符串处理
Series.str
可用于以字符串形式访问系列的值,并对其应用几种方法。这些可以像 Series.str.<function/property>
一样访问。
方法 | 描述 |
---|---|
Series.str.capitalize | 将每个字符串的第一个字符大写 |
Series.str.toUpperCase | 将所有字符转换为大写 |
Series.str.toLowerCase | 将所有字符转换为小写 |
Series.str.charAt | 返回指定索引(位置)处的字符。 |
Series.str.concat | 连接两个或多个字符串/数组。 |
Series.str.startsWith | 检查字符串是否以指定的字符开头。 |
Series.str.endsWith | 检查字符串是否以指定的字符结尾 |
Series.str.includes | 检查字符串是否包含指定的字符串/字符。 |
Series.str.indexOf | 返回字符串中第一个找到的指定值的位置。 |
Series.str.lastIndexOf | 返回字符串中指定值最后一次出现的位置。 |
Series.str.repeat | 返回一个新字符串,其中包含现有字符串的指定数量的副本。 |
Series.str.search | 在字符串中搜索指定的值或正则表达式,并返回匹配的位置。 |
Series.str.slice | 提取字符串的一部分并返回一个新字符串。 |
Series.str.split | Splits a string into an array of substrings. |
Series.str.substr | 从字符串中提取字符,从指定的开始位置开始,通过指定的字符数。 |
Series.str.substring | 从两个指定索引之间的字符串中提取字符。 |
Series.str.len | 计算每个字符串中的字符数。 |
Series.str.trim | 删除字符串两端的空白。 |
Series.str.join | 将字符串连接到指定值。 |
Series.str.replace | 替换序列/索引中模式/正则表达式的每次出现。 |
详解:
3.11 绘图
Series.plot
是一个可调用的方法,也是一个命名空间属性,用于Series.plot.<kind>
形式的特定绘图方法。
方法 | 描述 |
---|---|
Series.plot.bar | 竖线图 |
Series.plot.box | 制作DataFrame一列的方框图 |
Series.plot.violin | 制作DataFrame一列的小提琴图 |
Series.plot.hist | 为DataFrame的一列炯之一个矩形图 |
Series.plot.scatter | 使用高斯核生成核密度估计图 |
Series.plot.line | 使用Series或DataFrame绘制线图 |
Series.plot.pie | 生成一个饼图 |
Timeseries Plots | 时间序列图 |
Table | 在Div中将Series 显示为交互式表格 |
详解:
3.12 序列化/ IO / 转换
方法 | 描述 |
---|---|
Series.to_csv | Write object to a comma-separated values (csv) file. |
Series.to_json | Convert the object to a JSON string. |
详解: