Numpy函数笔记——np.genfromtxt()

1.两个主循环

genfromtxt运行两个主循环。第一个循环以字符串序列转换文件的每一行。第二个循环将每个字符串转换为适当的数据类型。这种机制比单循环慢,但具有更大的灵活性。特别是,当其他更快,更简单的功能(如loadtxt不能)无法处理时, genfromtxt能够考虑丢失的数据。

可识别文件:该功能可识别gzip和bz2(bzip2)存档

2.参数

numpy.genfromtxtfname , dtype=<type  'float'> , comments='#' , delimiter=None , skip_header=0 , skip_footer=0 , converters=None , missing_values=None , filling_values=None , usecols=None , names=None , excludelist=Nonedeletechars=Nonereplace_space='_'autostrip=Falsecase_sensitive=Truedefaultfmt='f%i'unpack=Noneusemask=Falseloose=Trueinvalid_raise=True , max_rows=None )[来源]

3.参数简介

fname : file, str, pathlib.Path, list of str, generator

dtype : dtype, 可选

comments :

用于指示注释开始的字符。注释后一行出现的所有字符都将被丢弃

delimiter :

定义分割应该如何发生

import numpy as np
from io import StringIO
s = StringIO("1,1.3,abcde")
data=np.genfromtxt(s,delimiter=',',dtype=[('myint','i8'),('myfloat','f8'),('mystring','S6')])
print(data)

 skip_header :

要在文件开头跳过的行数。

skip_footer :

要在文件末尾跳过的行数。 

converters:变量,可选

将列的数据转换为值的一组函数。转换器还可用于为缺失数据提供默认值:.converters = {3: lambda s: float(s or 0)}

missing:变量,可选 

在 numpy 1.10 中删除了missing。请改用missing_values 。

missing_values : 变量,可选

与缺失数据对应的字符串集。

fill_values : 变量,可选

数据丢失时用作默认值的一组值。

usecols : 序列,可选

要读取的列,0 是第一列。例如, 将提取第 2 列、第 5 列和第 6 列。usecols = (1, 4, 5)

names:{无,真,str,序列},可选

如果names为 True,则从第一个skip_header行之后的第一个有效行读取字段名称。如果名称是逗号分隔名称的序列或单字符串,则名称将用于定义结构化 dtype 中的字段名称。如果名称为无,则将使用 dtype 字段的名称(如果有)。

excludelist : 序列,可选

要排除的名称列表。此列表附加到默认列表 ['return','file','print']。排除的名称会附加下划线:例如,file将变为file_

deletechars : str, 可选

组合必须从名称中删除的无效字符的字符串。

defaultfmt : str, 可选

用于定义默认字段名称的格式,例如“f%i”或“f_%02i”。

autostrip : bool, 可选

是否自动从变量中去除空格。

replace_space : 字符,可选

用于替换变量名称中的空格的字符。默认情况下,使用“_”。

case_sensitive : {True, False, 'upper', 'lower'}, 可选

如果为 True,则字段名称区分大小写。如果为 False 或 'upper',字段名称将转换为大写。如果为 'lower',字段名称将转换为小写。

unpack:布尔,可选

如果为 True,则返回的数组被转置,以便可以使用解包参数 x, y, z = loadtxt(...)

usemask : bool, 可选

如果为 True,则返回一个掩码数组。如果为 False,则返回一个常规数组。

loose:布尔,可选

如果为 True,则不会为无效值引发错误。

invalid_raise :布尔,可选

如果为 True,如果在列数中检测到不一致,则会引发异常。如果为 False,则会发出警告并跳过违规行。

max_rows : int, 可选

要读取的最大行数。不得与skip_footer 同时使用。如果给定,该值必须至少为 1。默认是读取整个文件。

返回:

:ndarray

从文本文件中读取的数据。如果usemask为 True,则这是一个掩码数组。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据分析 数据分析——数据校验 数据校验   很多时候在数据分析之前,我们需要对样本进⾏校验,以确定样本的价值。   先写⼊数据: import pandas as pd import numpy as np df = pd.DataFrame({'⼀班':[90,80,66,75,99,55,76,78,98,None,90], '⼆班':[75,98,100,None,77,45,None,66,56,80,57], '三班':[45,89,77,67,65,100,None,75,64,88,99]}) 1完整性校验 完整性校验 # 判断是否为缺失值(空值) df.isnull() # 统计出每⼀列的缺失值数⽬ df.isnull().sum() # 每⼀列缺失⽐例 df.isnull().sum()/df.shape[0] # 判断⾮空值的数⽬ df.notnull().sum()   笔记:这⾥也可以⽤到describe⽅法,如下: # 使⽤describe⽅法查看数据的完整性,统计出了⾮空值的数⽬ df.describe().iloc[0,:]   忘了describe⽅法的话,请查看《》 2时间跨度检验 时间跨度检验   很多样本的时间数据并不是以datatime64类型存储的,此时我们得先进⾏"数据类型修改"   详见:《》的4.3数据修改   之后进⾏最⼤最⼩相减就OK了。 print(date.max()-date.min()) 3重复检验 重复检验 # ⼆班和四班是相同的 df1 = pd.DataFrame({'⼀班':[90,80,66,90,99,55,76,90,98,None,90], '⼆班':[75,98,100,75,77,45,None,75,56,80,57], '三班':[45,89,77,45,65,100,None,45,64,88,99], '四班':[75,98,100,75,77,45,None,75,56,80,57]}) 3.1样本重复检验(⾏) 样本重复检验(⾏) DataFrame.drop_duplicates(subset=None, keep='first', inplace=False) subset:表⽰以这⼏个特征为基础,对整体样本进⾏去重。默认为使⽤所有特征 keep:表⽰保留第⼏个重复的样本。只允许填⼊first(保留第⼀个),last(保留最后⼀个),False(只要存在重复均不保留)。默认为first inplace:表⽰是否在原DataFrame上进⾏操作,会改变原数据。默认为False # 删除重复样本(⾏) df1.drop_duplicates() # 计算样本重复率 (df1.shape[0] - df1.drop_duplicates().shape[0])/df1.shape[0] 3.2特征重复检验(列) 特征重复检验(列)   特征重复检验相⽐样本重复检验要⿇烦⼀点,因为没有现成的函数可调⽤。   需要⽤到相似度的概念,如下: pearson相似度 spearman相似度 kendall相似度 # 使⽤pandas的⽅法:DataFrame.corr(method='pearson') asso = df1.corr() # 输出asso,看⼀下是怎样的先 print(asso)   不难看出,这是⼀个对称矩阵,所以我们只需要判断右上半⾓的数据便可。 # 输出应删除的columns,1.0可根据需求改动 delCol = [] for i in range(len(asso)): for j in range(i+1,len(asso)): if asso.iloc[i,j] == 1.0: delCol.append(asso.columns[j]) print(delCol) 最后,附上⼀段 特征重复检验 的⾃定义代码: # 输⼊DataFrame,输出特征重复的列名,可直接复制调⽤ def drop_features(data,way = 'pearson',assoRate = 1.0): ''' 此函数⽤于求取相似度⼤于assoRate的两列中的⼀个,主要⽬的⽤于去除数值型特征的重复 data:数据框,⽆默认 assoRate:相似度,默认为1 ''' assoMat = data.corr(method = way) delCol = [] length = len(assoMat) for i in range(length): for j in range(i+1,length): if asso.iloc[i,j] >= assoRate: delCol.append(assoMat.columns[j]) r

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值