C# 已经远不只是一个传统企业后端开发语言了。随着 .NET 9 的进步和 C# 14 的新特性加入,它现在在数据科学与数据分析领域也展现出强大潜力。无论你是在处理大数据、构建机器学习模型,还是挖掘趋势,C# 都能提供安全、类型安全且高性能的现代数据工作流支持。
这篇深度教程将通过实例、专家建议和集成方式,全面讲解 C# 14 在数据分析与科学工作中的实际用法。
此外,C# 14 的语法增强也让数据处理变得更高效和优雅。
public record Customer(
string Id,
string Name,
int Age,
string Country,
double AnnualSpending
);
var customers = [
new Customer("C001", "Alice", , "USA", ),
new Customer("C002", "Bob", , "UK", ),
new Customer("C003", "Charlie", , "Canada", ),
new Customer("C004", "Diana", , "USA", ),
];
var avgSpendByCountry = customers
.GroupBy(c => c.Country)
.ToDictionary(
grp => grp.Key,
grp => grp.Average(c => c.AnnualSpending)
);
foreach (var entry in avgSpendByCountry)
{
Console.WriteLine($"{entry.Key}: 平均消费 = {entry.Value}");
}
foreach (var c in customers)
{
var segment = c switch
{
{ AnnualSpending: >= } => "高端客户",
{ AnnualSpending: >= and < } => "普通客户",
_ => "预算型客户"
};
Console.WriteLine($"{c.Name} 属于 {segment}");
}
var chart = Chart.Column(
customers.Select(c => (c.Name, c.AnnualSpending))
);
chart.Show();
对于大型数据集,可将 Plotly.NET 与流式数据结合,实现实时可视化仪表盘。
以下是《C# 数据科学实践:结合 C# 14 特性(全方位指南)》的第二部分翻译,继续贴近中文习惯表达:
var context = new MLContext();
var data = context.Data.LoadFromEnumerable(customers);
在这个示例中,我们直接将 customers
集合加载为 ML.NET 的数据源,可直接用于训练。
var pipeline = context.Transforms
.Concatenate("Features", "Age", "AnnualSpending")
.Append(
context.Clustering.Trainers.KMeans(
featureColumnName: "Features",
numberOfClusters:
)
);
此管道中,我们将 Age
和 AnnualSpending
两个字段合并为特征向量,并使用 KMeans 聚类算法对客户进行分组。
var model = pipeline.Fit(data);
var predictions = model.Transform(data);
context.Data
.CreateEnumerable<CustomerPrediction>(predictions, reuseRowObject: false)
.ToList()
.ForEach(p =>
Console.WriteLine($"聚类编号: {p.PredictedClusterId}")
);
这里展示了从模型训练到生成聚类预测的完整流程,并输出每位客户所被分配的聚类编号。
public class CustomerPrediction
{
public uint PredictedClusterId { get; set; }
}
ML.NET 会根据 PredictedClusterId
自动映射聚类结果到你自定义的类中,方便后续分析与展示。
可使用 Microsoft.Data.Analysis
中的 DataFrame API 处理超大 CSV 数据文件。
var df = DataFrame.LoadCsv("customers.csv");
df = df[
df["AnnualSpending"]
.ElementwiseGreaterThan()
];
Console.WriteLine(df);
这个例子中,我们从 CSV 文件加载客户数据,并筛选出年消费大于 20,000 的客户子集进行后续分析。
为了在数据量大、操作复杂的情况下仍能保持高性能,可以结合如下策略:
Parallel.ForEachAsync
并行处理内存数据。ValueTask
与 Async Streams
高效处理 I/O 操作。Span<T>
与 Memory<T>
操作数组或二进制块,避免复制提升效率。C# 14 通过其现代语言特性与强大库生态,使数据科学工作既高效又具备良好的可维护性。从小规模的数据探索到企业级的机器学习应用,C# 都能游刃有余地支持。
无论你是数据科学家还是 .NET 工程师,现在正是拥抱 C# 数据分析能力的好时机!
本文使用chatgpt协助翻译。
作者:John Godel,版权归原作者John Godel所有
原文链接:c-sharpcorner.com/article/c-sharp-data-science-with-c-sharp-14-features-comprehensive-guide/