一、业务内容
- 读入csv文件到dataframe里
- 生成新的列【“MA5"】
- 计算MA5指标
- 把dataframe重新保存成csv文件
二、涉及的rust知识
- ploars包(用于dataframe的处理)的简单使用
- dataframe增加列的操作
- dataframe的打印
- 自定义函数
- 闭包的使用
- 读取csv到df中
- 把df保存到csv中
- map的使用
- series的切片
- 条件表达式的使用
三、具体实现
1、待处理的csv文件——某只k线文件

2、包的引用
主要用到的是polars,这个包等同于python中的pandas以及julia中的dataframes。
参观和学习的地址:
官网地址:https://docs.rs/polars/latest/polars/
仓库地址:https://github.com/pola-rs/polars
extern crate polars;
use polars::prelude::*;
use std::fs::File;
3、生成一个dataframe
DataFrame::default()
let mut df = DataFrame::default();
4、df里面增加一列
df.with_column()
df.with_column(Series::new("榜号",vec![1,2,3]));
df.with_column(Series::new("姓名",vec!["张三丰","黄老邪","老顽童"]));
5、 生成一个series
Series::new()
let mySeries = Series::new("姓名",vec!["张三丰","黄老邪","老顽童"]);
6、读取csv到df 中
CsvReader::new()
/// 功能:读取csv文件,转成dataframe
/// 输入:filePath:String ,文件路径和名字
/// 输出:Result<DataFrame>
///
/// # Examples
/// ```
/// use polars::prelude::*;
/// use std::fs::File;
/// let df = read_csv("D:/csvTest/000004.csv".to_string());
/// println!("{:?}", df);
/// ```
///
fn read_csv(filePath: String) -> Result<DataFrame>
{
let file = File::open(filePath).expect("找不到文件");
CsvReader::new(file)
.infer_schema(None)
.has_header(true)
.finish()
}
测试代码:
use polars::prelude::*;
use std::fs::File;
let df = read_csv("D:/csvTest/000004.csv".to_string());
println!("{:?}", df);
7、把df保存成csv文件
write_csv::new()
/// 【功能】把dataframe保存成csv
/// 输入:
/// df: &mut DataFrame
/// filePath:String
/// 输出:Result<()>
///
/// # Examples
/// ```
/// extern crate polars;
/// use polars::prelude::*;
/// let mut df = DataFrame::default();
/// df.with_column(Series::new("榜号",vec![1,2,3]));
/// df.with_column(Series::new("姓名",vec!["张三丰","黄老邪","老顽童"]));
/// write_csv(& mut df,"e:/bbb.csv".to_string());
/// ```
///
fn write_csv(df: &mut DataFrame,filePath:String) -> Result<()> {
let mut file = File::create(filePath).expect("创建文件失败");
CsvWriter::new(&mut file)
.has_header(true) //.has_headers(true)
.with_delimiter(b',')
.finish(df)
}
测试代码:
extern crate polars;
use polars::prelude::*;
let mut df = DataFrame::default();
df.with_column(Series::new("榜号",vec![1,2,3]));
df.with_column(Series::new("姓名",vec!["张三丰","黄老邪","老顽童"]));
write_csv(&

本文介绍如何使用Rust语言和Polars库进行CSV文件的数据读取、处理和保存。主要内容包括:利用Polars操作DataFrame,计算移动平均线MA5,并将结果保存回CSV文件。
最低0.47元/天 解锁文章
630

被折叠的 条评论
为什么被折叠?



