Python数据处理_pandas读取csv文件_numpy进行归一化处理

请执行以下命令下载样本数据

数据为CSV表格有8列,其中abstime列为时间列,其余列为特征列

!wget http://82.156.209.173/s/dHCnaH32rtZdxcs/download
!mv download sample_data_A100159.csv

1. 对给出的样本文件中的所有特征列做normalization,映射至(0-255)的区间,从abstime的第一行开始每隔200条取一次整行数据,并将最终取出的数据并以PNG格式的图片输出。

提示:输出图片用PIL库
可参考 https://blog.youkuaiyun.com/qq_42967398/article/details/95388563

对于样本XN×KX_{N\times K}XN×K,共NNN个样本,KKK个特征。sample_data_A100159.csv的shape是(4905, 8)。所以有N=4905N=4905N=4905K=8K=8K=8
1)归一化是按照每个特征进行归一化。对于第kkk个特征,将数据归一化到[0,1]:X=X−XminXmax−XminX=\frac{X-X_{min}}{X_{max}-X_{min}}X=XmaxXminXXmin2)对于第kkk个特征,将数据归一化到[0,255],令low=0,high=255low=0,high=255low=0,high=255X=low+X−XminXmax−Xmin∗(high−low)X=low+\frac{X-X_{min}}{X_{max}-X_{min}}*(high-low)X=low+XmaxXminXXmin(highlow)3)若第kkk个特征的值全部相同,那么Xmax−Xmin=0X_{max}-X_{min}=0XmaxXmin=0,分母为0,计算结果溢出,程序报错。令分母加一个小数(1e-5)。
4)numpy便于对N维数组对象进行整体的操作。比如有KKK列特征,不用循环KKK次进行归一化操作。数据是二维的,在第一维度上进行最大值最小值计算。第一维度是样本数量。data.min(axis=0)data.min(axis=0)data.min(axis=0)以及data.max(axis=0)data.max(axis=0)data.max(axis=0)两个操作。

import pandas as pd 
import numpy as np 
import random 
from PIL import Image 
#################################
#  CODING HERE
sample_data = pd.read_csv("sample_data_A100159.csv",header = 0)
data = np.array(sample_data)
print(data.size) #39240
print(data.shape) #(4905, 8)
print(data.ndim) #2
print(data.dtype) #float64
#归一化
x_nor = (data - data.min(axis=0))/(data.max(axis=0)-data.min(axis=0)+1e-5)* (255.0-0.0)+0.0
#(某个元素-它这列最小的数)/(它这列最大的数-它这列最小的数)
print(x_nor.shape)

data = pd.DataFrame(x_nor)
data.to_csv("normalization_A100159.csv",index=False,header=False)
abstime=data[:][6]
print(data[:][6])
ans = []
for i in range(0 , 4094 , 200): 
    ans.append(abstime[i])
print(len(ans))
#################################
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值