关于数据挖掘预处理算法 fstream与数据格式的关系

本文介绍了数据挖掘课程中遇到的将txt格式数据读取到内存的问题,包括流水单号数据预处理、日期格式修正、正负数错误修正等,并详细解释了使用fstream和vector进行数据读取时遇到的购买数量问题,以及如何通过代码实现正确的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


关于数据挖掘预处理算法  fstream与数据格式的关系

-2015-5-12- 14:52  created by Sui


最近开始上数据挖掘课程,第一次做实验需要把来自txt格式 的数据读取到内存,本来以为很简单的问题,结果搞了一个多小时都没有成,以下总结一下教训,以便以后再遇到相似的问题。


一、预处理算法

    本次要处理的数据是超市的流水单号,如下:

   流水单号                   门店号   POS机号 日期                   商品序号      商品ID     购买数量    单价           总额

   200304130001-001    1020    1020       2003年4月13日    1                1001891    1             34.5          34.5
   200304130002-001    1020    1020       ###                   1                1001171    1              2.3           2.3
   200304130002-001    1020    1020       2003年4月13日    2                1006479    1             10.2          10.2


  一开始只是按照自己的思路设计了一个保存的class,如下:

class  Sales{
public:
	void showInfo();
	void dateNormalization(); //修正日期格式
	void positiveNormalization(); //修正正负错误
public:
	string _serial;		//流水号
	int   _marketNum;	//门店号
	int   _posNum;		//POS机号
	string _date;		//日期
	int    _goodsNum;    //购买商品序号
	int    _goodsID;	//商品ID
	double _buyNum;		//购买数量
	double _singlePrice; //单价
	double _totalPrice;	 //总价
};


然后通过fstream 和vector进行读取

fstream file("1020.txt");
	vector<Sales>  salesVec;
	//存入数据    
	while (!file.eof()){
		Sales sale=Sales();
		file>>sale._serial>>sale._marketNum>>sale._posNum
			>>sale._date>>sale._goodsNum>>sale._goodsID
			>>sale._buyNum>>sale._singlePrice>>sale._totalPrice;
		salesVec.push_back(sale);
	}


  但是! 一个很意外的问题是: 购买数量可能不是int,这样在读取数据的时候,

  如果读取到 购买数量:0.34 ,通过file>>_buyNum 的时候只会读取小数点前的数据,后面的数据恰好被单价读取。

 如此这样,后边所有的数据都将错位。


二、数据预处理

    修正日期格式:..


 p.s.要上课啦,回来再写。

      内容浅薄,还请高手不要鄙视。





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值