关于python中numpy.loadtxt()的详细用法

做数据分析离不开对数据的获取,而常用到的作为数据存储的文件类型有:csv,json,vml,hdf等(本文介绍对csv文件的数据获取方法numpy.loadtxt())。

获取csv文件数据常用到的模块

照自己目前的学习进度,对csv数据的获取通常会用到numpy模块的loadtxt()方法以及在numpy基础上的pandas模块(下篇博客提及).

numpy的loadtxt()方法

numpy.loadtxt()方法的参数有以下这些:
pycharm给出的参数提示

参数 作用
fname 被读取的文件名(文件的相对地址或者绝对地址)
dtype 指定读取后数据的数据类型
comments 跳过文件中指定参数开头的行(即不读取)
delimiter 指定读取文件中数据的分割符
converters 对读取的数据进行预处理
skiprows 选择跳过的行数
usecols 指定需要读取的列
unpack 选择是否将数据进行向量输出
encoding 对读取的文件进行预编码

各个参数的详细用法

fname:指定需要读取的CSV文件(从某种意义来说,CSV文件属于txt文件,详细可百度)地址即可完成最简单的读取操作,如下:
创建一个csv文件(test_csv.csv),文件内容是:
csv文件内容
使用numpy.loadtxt()读取,此时使用文件的相对地址进行读取:

import numpy as np
csv_array = np.loadtxt('./test_csv.csv',dtype=str)

结果显示为:
结果
考虑到loadtxt()中的dtype参数默认设置为float,这里设置为str字符串便于显示,顺带说一下,dtype参数指定读取后的数据类型,而numpy读取后的数据是一个numpy多维数组的数据类型,下下博客可能介绍。

comments:comments参数指定读取中,跳过以comments参数开头的行,如:类似linux系统的配置文件中用于说明的行,一般用“#”开头,我们就可以用comments参数进行跳过。
(演示需要)建立一个TXT文件test.txt,内容如下:
关于python中numpy.loadtxt()的详细用法_第1张图片
使用numpy进行读取:

import numpy as np
txt_array = np.loadtxt('./test.txt',dtype=str,comments='#')
print(txt_array)

结果显示为:
读取结果
delimiter:该参数类似于python处理字符串分割中的split()函数,对数据根据参数进行分割处理。例如fname参数中的文件test_csv.csv,csv文件默认是以逗号分隔数据,在查看文件时没有显示,当没有使用delimiter参数进行分割时,默认是将整个数据一起输出,当使用delimiter参数时:

import numpy as np
csv_array = np.loadtxt('./test_csv.csv',dtype=str,delimiter=',')
print(csv_array)

结果显示为:
使用delimiter
结果将数据分行输出了
converters:该参数是将某一列的数据进行函数预处理再获取,格式为:{列号:函数},可以看成一个字典形式,对列上的所有数据进行函数处理
具体过程如下:
先定义一个函数

def _is_num(_str):
    if len(_str)>1:
       return 'num'
    return 'values'

使用converters参数操作文件:

csv_array = np.loadtxt('./test_csv.csv',
                       dtype=str,
                       delimiter=',',
                       converters={1:_is_num})

结果显示为:
使用converters参数
skiprows:指定读取时忽略的行数,默认从首行开始计数,也就是说,当我们设置skiprows=1时,列名就会被跳过不读取,这个参数经常被这样使用:

csv_array = np.loadtxt('./test_csv.csv',
                       dtype=str,
                       delimiter=',',
                       converters={1:_is_num},
                       skiprows=1)

结果显示为:
skiprows的使用
usecol:usecols参数指定我们需要使用的列,用于提取文件中我们使用的数据,也就是说,平时中我们可能不需要index序列之类的,只要values这一列的数据,如下设置:

csv_array = np.loadtxt('./test_csv.csv',
                       dtype=str,
                       delimiter=',',
                       usecols=1,
                       skiprows=1)

csv文件的列号是从0开始计数,所以我们在这里将参数设置为1.
结果显示为:
usecol的使用
unpack:选择是否将数据向量输出,默认是False,即将数据逐行输出,当设置为True时,数据将逐列输出。

csv_array = np.loadtxt('./test_csv.csv',
                       dtype=str,
                       delimiter=',',
                       unpack=True,
                       skiprows=1)

结果显示为:
在这里插入图片描述
encoding:这个参数是决定读取文件时使用的编码方式,也就是对文件编码方式进行更改,python经常有编码方面的问题出现,关于编码与解码的换一篇博客再讲,在这里就不细说了。

你可能感兴趣的:(python数据分析)