在 Debian 上使用 Node.js 进行数据分析的实操指南
一 环境准备与安装
二 数据处理与分析流程
三 示例一 批量统计 CSV 并计算均值与标准差
// analyze.js
const fs = require('fs');
const csv = require('csv-parser');
const math = require('mathjs');
const results = [];
const numericCol = 'value'; // 将此处替换为你的数值列名
fs.createReadStream('data.csv')
.pipe(csv())
.on('data', (row) => {
const v = parseFloat(row[numericCol]);
if (!isNaN(v)) results.push(v);
})
.on('end', () => {
const mean = math.mean(results);
const std = math.std(results, 'population'); // 总体标准差
console.log({ count: results.length, mean, std });
});
四 示例二 Express API 聚合 MongoDB 数据
// server.js
const express = require('express');
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydb', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const DataSchema = new mongoose.Schema({ value: Number }, { collection: 'data' });
const Data = mongoose.model('Data', DataSchema);
const app = express();
app.use(express.json());
app.get('/analyze', async (req, res) => {
try {
const agg = await Data.aggregate([
{ $group: { _id: null, avg: { $avg: '$value' } } }
]);
res.json({ average: agg[0]?.avg ?? null });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server on ${PORT}`));
五 运行监控与性能优化
六 何时考虑其他技术栈