用pandas、numpy对csv数据取均值和归一化

用pandas、numpy对csv数据取均值和归一化

(注:本文利用的是一个公开的用于室内定位的数据库,再上一篇blog中已经从原始数据提取出要用的特征列,今天利用提取好的数据进行下一步的数据处理工作)

1.导入模块,读取数据

import pandas as pd
import numpy as np
file = pd.read_csv('H:/Ex 1.5.csv',   index_col=False, header=0, chunksize=10, iterator=True, usecols=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20))

**
导入模块,将之前处理好的数据去掉列名,行索引读取

chunksize=10

因为数据量比较大,而且根据论文提供的方法,需读取连续10s的数据,即我们10行为一个chunk分块读取2410行数据,总计241chunk块

2.取均值

for chunk in file:
    c_a = chunk.mean(axis=0)  # 取均值

利用for循环,按分好的chunk块取,即执行241次,连续读取241个chunk块数据

mean(axis=0):跨行求均值 其中axis = 0 是跨行,axis = 1 是跨列 这里容易弄错

**

输入的chunk块:

在这里插入图片描述

输出:

在这里插入图片描述

均值就这样求出来了,10×20的数据得到了1×20的数据

3.数据归一化

数据归一化公式:在这里插入图片描述

c_norm = (c_a-c_a.min())/(c_a.max()-c_a.min())                  # 归一化

c_norm.to_csv('c_norm.csv', mode='a', index=False, header=0)        

这里的mode = ‘a’ :是累进输出,即每循环一次,输出的csv中多一个chunk数据(多20行)

输出:

在这里插入图片描述
这样将得到了归一化后的数据,最终的得到4820×1的数据,并输出成csv文件,很明显这里Ex 1.5的值为1,因为这个原始数据就是再Ex1.5测得的,总共20个AP,基本上取均值后的Ex1.5 的值,大多数值都为1,或者接近1,说明均值归一化处理结果正确。

整理数据:

之前处理好的数据是一个4820×1 的数据,现在先读取csv,再用np的reshape方法把他转换成241×20的数据,便于后期使用

b_arr = np.array(pd.read_csv('c_norm.csv', header=None))               # 将一列数据转换成array数组
b_gray_b = b_arr.reshape(241, 20)                                      # 4820*1  reshape   241*20

输入:

将一个4820×1 的数据,用np的reshape方法把他转换成241×20的数据
在这里插入图片描述

输出:

在这里插入图片描述

到这里数据预处理工作告一段落,之后就是学习Pytorch(虽然我还没开始学),将处理好的数据用于训练、测试等下一步操作。

(PS:上面的图片都是用pycharm的debug调试界面截图,先在代码行标旁左击加断点,再点右上角debug(绿色小虫),再点左下的step over,点开右侧的变量,一步一步观察变化。)
在这里插入图片描述

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值