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

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

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

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.youkuaiyun.com/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,   604,   683],
       [   -<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值