C++ CSV数据处理:计算列的标准差和均值并写入结果
C++ CSV数据处理:计算列的标准差和均值并写入结果
本示例演示使用C++代码读取CSV文件中的某一列,计算其标准差和均值,并将结果写入同一列。
代码示例
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <cmath>
using namespace std;
vector<vector<string>> readCSV(string filename)
{
vector<vector<string>> data;
ifstream file(filename);
string line;
while (getline(file, line))
{
stringstream ss(line);
vector<string> row;
string value;
while (getline(ss, value, ','))
{
row.push_back(value);
}
data.push_back(row);
}
return data;
}
void writeCSV(string filename, vector<vector<string>> data)
{
ofstream file(filename);
for (int i = 0; i < data.size(); i++)
{
for (int j = 0; j < data[i].size(); j++)
{
file << data[i][j] << ",";
}
file << endl;
}
}
vector<double> getColumn(vector<vector<string>> data, int col)
{
vector<double> column;
for (int i = 0; i < data.size(); i++)
{
column.push_back(stod(data[i][col]));
}
return column;
}
double getMean(vector<double> data)
{
double sum = 0;
for (int i = 0; i < data.size(); i++)
{
sum += data[i];
}
return sum / data.size();
}
double getStandardDeviation(vector<double> data)
{
double mean = getMean(data);
double sum = 0;
for (int i = 0; i < data.size(); i++)
{
sum += pow(data[i] - mean, 2);
}
return sqrt(sum / data.size());
}
int main()
{
string filename = "example.csv";
int col = 2; // 指定读取第三列数据(下标从0开始)
vector<vector<string>> data = readCSV(filename);
vector<double> column = getColumn(data, col);
double mean = getMean(column);
double stdDev = getStandardDeviation(column);
cout << "Mean: " << mean << endl;
cout << "Standard deviation: " << stdDev << endl;
// 将计算结果写入对应列
for (int i = 0; i < data.size(); i++)
{
data[i][col] = i == 0 ? "Statistics" : i == 1 ? "Mean: " + to_string(mean) : i == 2 ? "Standard deviation: " + to_string(stdDev) : "";
}
writeCSV(filename, data);
return 0;
}
注意:
- 这只是一个简单的示例代码,仅供参考。在实际应用中,可能需要进行更多的错误处理和数据清洗等操作。
- 代码中
col变量指定了要读取的列号,下标从0开始。 - 该示例将计算结果写入CSV文件的同一列,您可以根据需要修改代码。
代码解释
代码主要包含以下几个部分:
- 读取CSV文件:
readCSV函数用于读取CSV文件,并将数据存储在一个二维字符串向量中。 - 获取指定列:
getColumn函数用于从二维字符串向量中提取指定列的数据,并将其存储在一个双精度浮点数向量中。 - 计算均值和标准差:
getMean和getStandardDeviation函数分别用于计算数据的均值和标准差。 - **写入结果:**代码将计算得到的均值和标准差写入CSV文件的同一列。
应用场景
该代码可用于各种数据分析和统计场景,例如:
- 计算某一列数据的统计指标,例如均值、标准差、最大值、最小值等。
- 对数据进行初步分析和清洗。
- 将计算结果写入新的文件或数据库中。
总结
本示例演示了使用C++代码实现读取CSV文件、计算列的标准差和均值,并写入结果的简单操作。您可以根据实际需求修改代码,以实现更复杂的数据处理功能。
原文地址: https://www.cveoy.top/t/topic/niz6 著作权归作者所有。请勿转载和采集!