开发者学堂课程【Python 科学计算库 NumPy 快速入门:IO 操作与数据处理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/605/detail/8826
IO 操作与数据处理
内容简介:
1 Numpy 读取
2如何处理缺失值
1 Numpy 读取
●genfromtxt(fname[, dtype, comments, ..1 Load data from a text file, with missing values handled as
specified.
id |
Value1 |
Value2 |
value3 |
1 |
123 |
1.4 |
23 |
2 |
110 |
|
18 |
3 |
|
2.1 |
19 |
#读取数据
test = np. genf romtxt('test.csv", delimiter=',')
返回结果:
array( [ [ nan, nan,nan,nan],
[1.,123.,1.4,23. ],
[2.,110.,nan,18. ],
[3.,nan,2.1,19. ]])
2、如何处理缺失值
1、什么是缺失值
什么时候 numpy 中会出现 nan:当我们读取本地的文件为 float 的时候,如果有缺失(或者为 None),就会出现 nan
2、缺失值处理
那么,在一组数据中单纯的把 nan 替换为 0,合适么?会带来什么样的影响?
比如,全部替换为 0 后,替换之前的平均值如果大于 0,替换之后的均值肯定会变小,所以更-般的方式是把
缺失的数值替换为均值(中值)或者是直接删除有缺失值的一行
所以:
●如何计算一组数据的中值或者 是均值
●如何删除有缺失数据的那一行(列)在 pandas 中介绍
t 中存在 nan 值,如何操作把其中的 nan 填充为每一列的均值
t = array([[ 0.,1.,2..3.,4. 5.],
[6.,7.,nan,9. ,10.,11.],
[ 12..13.14.,nan,16.,17.],
[ 18..19.20.,21..22. ,23.]] )
处理逻辑:
def fill nan_ by_ column_ mean(t):
tfor i in range(t. shape[1]):
#计算 nan 的个数
nan_ _num = np. count_ nonzero(t[:, i][t[:, i] != t[:, i]])
if nan_ num > 0:
now_ col = t[:, i]
#求和
now_ .col not_ nan = now_ col[np. isnan(now_ col) == False]. sum()
#和/个数
now_ .col mean = now_ .col not_ nan / (t.shape[0] - nan_ num)
#赋值给 now_ col
now_ col[np. isnan(now_ .col)] = now_ .col mean
#赋值给 t,即更新t的当前列
t[:, i] = now_ .col
return t