鄙人学习笔记,这个笔记以例子为主。
开发工具:Spyder


加载文件

numpy提供了函数,用于加载逻辑上可被解释为二维数组的文本文件,文件格式如下所示:

数据项1 <分隔符> 数据项2 <分隔符> ... <分隔符> 数据项n
例如:
AA,AA,AA,AA,AA
BB,BB,BB,BB,BB
...
或:
AA:AA:AA:AA:AA
BB:BB:BB:BB:BB
...

调用numpy.loadtxt()函数可以直接读取该文件并且获取ndarray数组对象:

import numpy as np
# 直接读取该文件并且获取ndarray数组对象
# 返回值:
#     unpack=False:返回一个二维数组
#     unpack=True: 多个一维数组
np.loadtxt('../aapl.csv',         # 文件路径delimiter=',',         # 分隔符usecols=(1, 3),           # 读取1、3两列 (下标从0开始)unpack=True,           # 是否按列拆包skiprows=1,             #跳过前1行comments='$',            #如果行的开头为$就会跳过该行dtype='U10, f8',       # 制定返回每一列数组中元素的类型converters={1:func}       # 转换器函数字典
)

举个例子1(读取csv文件)

数据:

由以上csv数据来看,我们有24行数据,且我们应该跳过第一行(行名),进行数据读取。

代码:

import sys
import numpy as np#sys.path.append("C:\\Users\\goatbishop\\Desktop\\data")
print(sys.path[-1])data01 = np.loadtxt(r'C:\Users\goatbishop\Desktop\data\data01.csv',delimiter = ',',usecols = tuple(range(3)),unpack = False,skiprows=1,dtype = 'U10, f8, f8')print(data01.shape)
print(data01)

结果:

由结果可知,我们有24个观测,每个观测被一个元祖存储在一起,并且这24个元祖被放在一个列表中,组成一个大数据集。

若此时设置unpack = True则python会帮我们把3列数据拆开,则此时我们需要用3个变量去接收:

import sys
import numpy as np#sys.path.append("C:\\Users\\goatbishop\\Desktop\\data")
print(sys.path[-1])dates, AQI, PM25 = np.loadtxt(r'C:\Users\goatbishop\Desktop\data\data01.csv',delimiter = ',',usecols = tuple(range(3)),unpack = True,skiprows=1,dtype = 'U10, f8, f8')print(dates.shape)
print(dates)

结果:

我们要将dates变量转换成时间形式数据,这时我们就要使用converters = {k :func}这个函数字典转换器。
converters = {k :func}的意思为:将第k列的每个观测行的数据,经过func函数进行转化。

在此案例中func函数的设置:

import sys
import numpy as np
import datetime as dt
import matplotlib.pyplot as mp
import matplotlib.dates as mddef time2time(yt):yt = str(yt, encoding='utf-8')nt = dt.datetime.strptime(yt, '%Y/%m/%d').date()t = nt.strftime('%Y-%m-%d')return t

由以上代码可知,首先对yt按照utf-8编码转换成字符串。再将yt字符串按照[年/月/日]的格式解析为时间形式数据,(strptime函数根据指定的格式把一个时间字符串解析为时间元组)然后再按照[年-月-日]的格式转换成字符串,再返回处理后数据(strftime函数接收时间元组,并返回以可读字符串表示的当地时间)。

python中时间日期格式化符号:

符号 含义
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%j 年内的一天(001-366)

我们再设置converters参数,并打印出来(接上面的代码):

dates, AQI, PM25 = np.loadtxt(r'C:\Users\goatbishop\Desktop\data\data01.csv',delimiter = ',',usecols = tuple(range(3)),unpack = True,skiprows=1,dtype = 'M8[D], f8, f8',converters = {0:time2time})print(dates.shape)
print(dates, dates.dtype)

结果:

我们再绘制时间序列图(将dates修改为matplotlib.dates内的时间数据类型):

代码(接上面的代码):

dates = dates.astype(md.datetime.datetime)mp.figure("Figure AQI", facecolor='lightgray' )mp.title("AQI Sequence Diagrams", fontsize = 16)
mp.xlabel("Date", fontsize = 14)
mp.ylabel("AQI", fontsize = 14)
mp.grid(linestyle = ":")
mp.plot(dates, AQI, color = 'dodgerblue', linestyle = '--', label = "AQI")
mp.plot(dates, PM25, color = 'r', linestyle = ':', label = "PM25")mp.legend(loc = 0)
mp.show()

结果:

有上图可以看出,x轴显示出来的刻度,实在不怎么招人喜欢。我们使用x轴刻度定位器,修改一下x轴的时间刻度(接上面的代码):


ax = mp.gca()
ax.xaxis.set_major_locator(md.WeekdayLocator(byweekday=md.SU))
ax.xaxis.set_major_formatter(md.DateFormatter('%d %b %Y'))
ax.xaxis.set_minor_locator(md.DayLocator())mp.show()

图像:

我们也可以调用autofmt_xdate()函数,设置倾斜的标识值,防止显示的刻度标识值过于紧密:

mp.gcf().autofmt_xdate()

图像:

numpy基础(part3)--加载文件相关推荐

  1. 7.3 TensorFlow笔记(基础篇):加载数据之从队列中读取

    前言 整体步骤 在TensorFlow中进行模型训练时,在官网给出的三种读取方式,中最好的文件读取方式就是将利用队列进行文件读取,而且步骤有两步: 1. 把样本数据写入TFRecords二进制文件 2 ...

  2. 7.1 TensorFlow笔记(基础篇):加载数据之预加载数据与填充数据

    TensorFlow加载数据 TensorFlow官方共给出三种加载数据的方式: 1. 预加载数据 2. 填充数据 预加载数据的缺点: 将数据直接嵌在数据流图中,当训练数据较大时,很消耗内存.填充的方 ...

  3. odoo基础数据加载

    odoo 基础数据加载 这里介绍的odoo基础数据加载分两种方式,一种是演示数据加载,一种是默认数据加载,下面就是详细介绍 首先,当然是创建一个date文件夹 项目目录,右键自定义一个文件夹 XML数 ...

  4. 无法加载文件,未对文件进行数字签名,法在当前系统上运行该脚本

    vue : 无法加载文件 F:\NODE18\node_global\vue.ps1.未对文件 F:\NODE18\node_global\vue.ps1 进行数字签名.无法在当前系统上运行该脚本.有 ...

  5. npm : 无法加载文件 D:\...\nodejs\npm.ps1,因为在此系统上禁止运行脚本

    问题: 在VSCode终端使用npm命令时,出现如下报错信息: npm : 无法加载文件 D:\ProgramFiles\nodejs\npm.ps1,因为在此系统上禁止运行脚本.有关详细信息,请参阅 ...

  6. 无法加载文件 C:/Windows/Microsoft.NET/Framework/Meaningless_string/mscorlib.tlb

    文章编号: 918685 - 最后修改: 2007年11月30日 - 修订: 3.0 安装 SQL Server 2005 时出现错误消息:"无法加载文件 C:/Windows/Micros ...

  7. npm : 无法加载文件 D:\Program Files\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。

    npm : 无法加载文件 D:\Program Files\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本.有关详细信息,请参阅 https: /go.microso ...

  8. Windows PowerShell安装指定版本vue/cli脚手架失效解决办法;vue : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\vue

    mac搭建vue项目看这篇 打开shift--鼠标右键,就可以打开Windows PowerShell 1.安装vue/cli npm install -g @vue/cli@3.12.0 @后面是版 ...

  9. PowerShell yarn : 无法加载文件 C:\Users\Admin\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。

    PowerShell yarn : 无法加载文件 C:\Users\Admin\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本. 解决办法: 收藏 79 设置如下 ...

最新文章

  1. Xilinx SDK中分配变量的存储地址
  2. 在线下线html页面,下线
  3. PADS 创建封装笔记
  4. 592zn rom/apk 自动签名工具_关于邮件签名证书的常见问题
  5. 125万像素智能相机收费站解决方案
  6. .NET日志工具介绍
  7. Linux学习(1)阿里云服务器及配置、使用xshell远程连接
  8. C++ MFC控件重影-编辑框重影
  9. Spider爬虫笔记[更新中...]
  10. 存储文件用 云服务器推荐推荐,云存储服务器推荐
  11. 教你用python截屏APP,将截取到的图片进行文字识别并将信息保存在EXCEL中。(附源码)
  12. 【设计模式】设计模式 网站推荐
  13. 坚果云企业版服务器端,坚果云团队版和企业版的区别
  14. 给小朋友讲故事——科学课,地球,太阳和月亮第二集人类登月第一段
  15. 推荐一个C# 制作免安装程序的工具和方法,超级好用 fody
  16. 入门 Android Lint
  17. linux 高效压缩工具xz的压缩和解压使用
  18. 树莓派mjpg-streamer+内网穿透
  19. 梯度下降算法的解释及直观展示
  20. 【Dart 教程系列第 10 篇】Dart 之 removeLast 删除数组的最后一个元素

热门文章

  1. OpenGL整体概念
  2. 机器学习(四)——SVM(2)
  3. ssm框架重定向_Java SSM 框架面试题,附答案!
  4. java性能调优工具--笔记
  5. C#读书笔记:线程,任务和同步
  6. 【HTML】 HTML基础知识 表单
  7. Kafka 0.9 新消费者API
  8. 【Android开发】用户界面设计-开发自定义的View
  9. 贴一个CMemDC 代码,这东西真不错噢,短小精悍,可谓极品
  10. JQuery when