Masked Arrays(numpy arrays掩码)针对数据中存在无效或者确实数据

这篇博客介绍了如何利用Numpy的arrays掩码处理包含缺失或无效数据的COVID-19数据集。内容包括理解arrays掩码的概念、创建和访问掩码数组、以及在数据拟合时如何处理缺失数据。通过实例展示了如何分析数据并使用掩码进行数据处理。
摘要由CSDN通过智能技术生成

arrays 掩码

将要完成的事:
使用Numpy 里的 arrays掩码模块分析COVID-19的数据并处理丢失的数据

可以学到的内容

  • 理解什么是arrays掩码,并且是怎么创建出来的
  • 如何访问和修改掩码数组里的数据
  • 学会在何时使用arrays掩码是最合适的

什么是arrays 掩码

思考以下问题:你有个数据集里面有部分数据丢失或者是无效的。而你想对这些数据进行处理,并且对不想要的数据跳过或者进行标记而不是直接删除他们,你可能使用条件语句过滤数据。
numpy.ma模块提供了一些Numoy ndarrays相同的功能,b并为数据添加了一种使得无效条目不会参与计算的结构。
掩码数组是标准 numpy.ndarray 和掩码的组合。掩码要么是 nomask,表示关联数组的任何值都无效,要么是一个布尔数组,用于确定关联数组的每个元素的值是否有效。当掩码的某个元素为 False 时,关联数组的对应元素是有效的,称为未掩码。当掩码的元素为 True 时,关联数组的对应元素被称为被掩码(无效)。
可将MaskedArray视为以下的组合:

  • data,任何形状或数量类型的常规numpy.ndarray;
  • boolean mask,与数据形状相同的布尔掩码;
  • fill_value,一个可用于替换无效条目以返回标准numpy.ndarray的值。

实例:使用arrays 掩码查看COVID-19的数据

import numpy as np
import os
# os.getcwd() function returns the current folder;you can change
# the filepath variable to point to the folder where you saved the .csv file
filepath = os.getcwd()
filename = os.path.join(filepath,"file_name")
'''
该数据文件包含不同类型的数据,其组织方式如下:
1.第一行是标题行,主要描述了各行中每列的数据,从第四列开始标明了观察日期;
2.第二行到第六行包含了将要检查数据类型不同的汇总数据,因此需要将其从将使用的数据中排除;
3.我们希望处理的数值数据从第四列第七行开始,并从那里延伸到最右侧的列和最下方的行。
'''
# skip_header and usecols to read only portions **of the data file** into each variable.
# read just the datas for columns 4-18 from the first row
dates = np.genfromtxt(
	filename,
	dtype = np.unicode_,
	delimiter=',',
	max_rows=1,
	usecols=range(4,18),
	encoding="utf-8-sig",
)
#read the names of the geographic locations from the first two colums,skipping the first six rows
locations = np.genfromtxt(
	filename,
	dtype=np.unicode_,
	delimiter=",",
	skip_header=6,
	usecols=(0,1),
	encoding="utf-8-sig",
)
#read the numeric data from just the first 14 days
nbcases = np.genfromtxt(
	filename,
	dtype=np.int_,
	delimiter=",",
	skip_header=6,
	usecols=range(4,18),
	encoding="utf-8-sig",
)

Exploring the data

import matplotlib.pyplot as plt
select_dates = [0, 3, 11, 13]
plt.plot(dates,nbcase.T,"--")
plt.xticks(select_dates,dates[select_dates])
plt.title("COVID-19 cumulative cases from Jan 21 to Feb 3 2020")

在这里插入图片描述
该图从1.24到2.1日具有奇怪的形状,我们提取的location数据包含了地区,国家两列。
在这里插入图片描述
接下来将所有来自China的数据分为一行,为此将从nbcase中仅选择位置数据对应于中国的行。接下来使用numpy.sum函数对所有选定的行(axis = 0)求和

china_total = nbcase[locations[:,1]=="China"].sum(axis=0)#numpy axis 详解:https://blog.csdn.net/sky_kkk/article/details/79725646 
'''
输出
array([ 247,   288,   556,   817,   -22,   -22,   -15,   -10,    -9,
          -7,    -4, 11820, 14410, 17237])
发现了异常出现负值了
'''

Missing data 丢失的数据

nbcases
#输出
array([[  258,   270,   375, ...,  7153,  9074, 11177],
       [   14,    17,    26, ...,   520,   
【为什么要学习NumpyNumPyPython语言的一个扩展程序库。支持多维数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy是人工智能、数据分析从业者必备的知识和技能,也是学习后续Python扩展库(Matplotlib, SciPy, Pandas, Seaborn, Scikit-image等)的基础。【推荐你学习这门课的理由】(1)图文并茂:课程采用Jupyter Notebook讲解,图文并茂,讲述与Numpy代码对应。其文件将分享给学员,可作为交互式电子书使用。(2)案例丰富: 每个知识点均有Numpy代码示例说明;难点使用图解说明和讲述。另提供Numpy项目实战案例-鸢尾花数据集上的数据分析与计算。(3)内容全面系统:涵盖了Numpy的基础用法和高级用法,包括:ndarray、创建数组、复制数组、数组访问、数组运算、数组操作、迭代数组、maskedarray、结构化数组、通用函数、数学函数、统计函数、排序函数、条件查找、随机数、字节交换、线性代数、数据文件读写等。   玩转是一种境界,显示了对该领域有很大的兴趣,并非常了解和能娴熟使用。希望本课程能帮助大家玩转Numpy!【优惠说明】 课程正在优惠! 备注:购课后可加入白勇老师课程学习交流QQ群:957519975【相关课程】《玩转Matplotlib数据绘图库》课程链接:https://edu.csdn.net/course/detail/28720 《Python编程的术与道:Python语言入门》课程链接: https://edu.csdn.net/course/detail/27845  《Python编程的术与道:Python语言进阶》课程链接: https://edu.csdn.net/course/detail/28618 【课程体系结构图】  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值