python loadtxt_Python 数据科学入门2:Matplotlib

第七章 从文件加载数据

很多时候,我们想要绘制文件中的数据。 有许多类型的文件,以及许多方法,你可以使用它们从文件中提取数据来图形化。 在这里,我们将展示几种方法。 首先,我们将使用内置的csv模块加载CSV文件,然后我们将展示如何使用 NumPy(第三方模块)加载文件。

import matplotlib.pyplot as pltimport csvx = []y = []with open('example.txt','r') as csvfile:    plots = csv.reader(csvfile, delimiter=',')    for row in plots:        x.append(int(row[0]))        y.append(int(row[1]))plt.plot(x,y, label='Loaded from file!')plt.xlabel('x')plt.ylabel('y')plt.title('Interesting GraphCheck it out')plt.legend()plt.show()123456789101112131415161718
b466970270eabd3e93e61afd8c55861c.png

这里,我们打开样例文件,包含以下数据:

1,52,33,44,75,46,37,58,79,410,412345678910

接下来,我们使用csv模块读取数据。 csv读取器自动按行分割文件,然后使用我们选择的分隔符分割文件中的数据。 在我们的例子中,这是一个逗号。 注意:csv模块和csv reader不需要文件在字面上是一个.csv文件。 它可以是任何具有分隔数据的简单的文本文件。

一旦我们这样做了,我们将索引为 0 的元素存储到x列表,将索引为 1 的元素存储到y列表中。 之后,我们都设置好了,准备绘图,然后显示数据。

虽然使用 CSV 模块是完全正常的,但使用 NumPy 模块来加载我们的文件和数据,可能对我们更有意义。 如果你没有 NumPy,你需要按下面的步骤来获取它。 为了了解安装模块的更多信息,请参阅 pip 教程。 大多数人应该都能打开命令行,并执行pip install numpy。

如果不能,请参阅链接中的教程。

一旦你安装了 NumPy,你可以编写如下代码:

import matplotlib.pyplot as pltimport numpy as npx, y = np.loadtxt('example.txt', delimiter=',', unpack=True)plt.plot(x,y, label='Loaded from file!')plt.xlabel('x')plt.ylabel('y')plt.title('Interesting GraphCheck it out')plt.legend()plt.show()1234567891011

结果应该是相同的图表。 稍后,当我们加载数据时,我们可以利用 NumPy 为我们做一些更多的工作,但这是教程未来的内容。 就像csv模块不需要一个特地的.csv一样,loadtxt函数不要求文件是一个.txt文件,它可以是一个.csv,它甚至可以是一个 python 列表对象。

第八章 从网络加载数据

除了从文件加载数据,另一个流行的数据源是互联网。 我们可以用各种各样的方式从互联网加载数据,但对我们来说,我们只是简单地读取网站的源代码,然后通过简单的拆分来分离数据。

import matplotlib.pyplot as pltimport numpy as npimport urllibimport matplotlib.dates as mdatesdef graph_data(stock):    stock_price_url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10y/csv'    source_code = urllib.request.urlopen(stock_price_url).read().decode()    stock_data = []    split_source = source_code.split('')    for line in split_source:        split_line = line.split(',')        if len(split_line) == 6:            if 'values' not in line:                stock_data.append(line)1234567891011121314151617181920

这里有很多步骤。首先,我们看到import。 pyplot像往常一样导入,然后导入了numpy,然后是用于访问互联网的urllib,然后导入了matplotlib.dates作为mdates,它对于将日期戳转换为 matplotlib 可以理解的日期很有用。

接下来,我们开始构建我们的graph_data函数。在这里,我们首先定义包含股票数据的网址。之后,我们写一些urllib代码来访问该 URL,然后使用.read读取源代码,之后我们继续解码该数据。如果你使用 Python 2,则不必使用decode。

然后,我们定义一个空列表,这是我们将要放置股票数据的地方,我们也开始使用split_source变量拆分数据,以换行符拆分。

现在,如果你去看源代码,用stock替换 URL 中的+stock+,像 AAPL 那样,你可以看到大多数页面数据确实是股票定价信息,但有一些头信息我们需要过滤掉。为此,我们使用一些基本的过滤,检查它们来确保每行有 6 个数据点,然后确保术语values不在行中。

现在,我们已经解析了数据,并做好了准备。我们将使用 NumPy:

date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data,                                                      delimiter=',',                                                      unpack=True,                                                      # %Y = full year. 2015                                                      # %y = partial year 15                                                      # %m = number month                                                      # %d = number day                                                      # %H = hours                                                      # %M = minutes                                                      # %S = seconds                                                      # 12-06-2014                                                      # %m-%d-%Y                                                      converters={0: bytespdate2num('%Y%m%d')})12345678910111213

我们在这里所做的是,使用numpy的loadtxt函数,并将这六个元素解构到六个变量。 这里的第一个参数是stock_data,这是我们加载的数据。 然后,我们指定delimiter(这里是逗号),然后我们指定我们确实想要在这里解包变量,不是一个变量,而是我们定义的这组变量。 最后,我们使用可选的converters参数来指定我们要转换的元素(0),以及我们打算要怎么做。 我们传递一个名为bytespdate2num的函数,它还不存在,但我们下面会编写它。

第九章 时间戳的转换

本教程的重点是将来自 Yahoo finance API 的日期转换为 Matplotlib 可理解的日期。 为了实现它,我们要写一个新的函数,bytespdate2num。

def bytespdate2num(fmt, encoding='utf-8'):    strconverter = mdates.strpdate2num(fmt)    def bytesconverter(b):        s = b.decode(encoding)        return strconverter(s)    return bytesconverter123456

此函数接受数据,基于编码来解码数据,然后返回它。

将此应用于我们的程序的其余部分:

import matplotlib.pyplot as pltimport numpy as npimport urllibimport matplotlib.dates as mdatesdef bytespdate2num(fmt, encoding='utf-8'):    strconverter = mdates.strpdate2num(fmt)    def bytesconverter(b):        s = b.decode(encoding)        return strconverter(s)    return bytesconverterdef graph_data(stock):    stock_price_url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10y/csv'    source_code = urllib.request.urlopen(stock_price_url).read().decode()    stock_data = []    split_source = source_code.split('')    for line in split_source:        split_line = line.split(',')        if len(split_line) == 6:            if 'values' not in line and 'labels' not in line:                stock_data.append(line)    date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data,                                                          delimiter=',',                                                          unpack=True,                                                          # %Y = full year. 2015                                                          # %y = partial year 15                                                          # %m = number month                                                          # %d = number day                                                          # %H = hours                                                          # %M = minutes                                                          # %S = seconds                                                          # 12-06-2014                                                          # %m-%d-%Y                                                          converters={0: bytespdate2num('%Y%m%d')})    plt.plot_date(date, closep,'-', label='Price')    plt.xlabel('Date')    plt.ylabel('Price')    plt.title('Interesting GraphCheck it out')    plt.legend()    plt.show()graph_data('TSLA')12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849

如果你绘制 TSLA,结果图应该看起来像这样:

3b67a8faf5624a722dd0ddae7eda1a9b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LetCode-MSSQL销售分析-I

此题是查询出销售额最高的人的ID 首先我们通过语句查询出最高的销售额 select top 1 sum(price) from Sales group by seller_id order by sum(price) desc然后我们通过查询总和的值和 最高销售额相等的ID即可 select seller_id from Sales group by seller_id having sum(p…

在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(一)

注意&#xff0c;这种风格的服务端需要swoole4.4以上&#xff0c;这种风格的服务端需要swoole4.4以上&#xff0c;这种风格的服务端需要swoole4.4以上&#xff0c;重要的事情说三遍&#xff01;&#xff01;&#xff01; 服务端<?php //namespace Swoole; use Swoole\Corou…

Zen Coding 系列教程一:入门

Zen Coding 是一款高效用于开发HTML与CSS的编码插件&#xff0c;可以安装到很多软件中使用Zen Coding 项目&#xff1a;http://code.google.com/p/zen-coding/ DemoDemo (使用 Ctrl , 展开缩写&#xff0c;需要JavaScript支持)中文版演示下载(完全支持)Aptana (跨平台);Coda,…

LetCode-MySql删除重复的电子邮箱

解法(1)&#xff1a;思路为先查询出查询出重复的ID并且取最小值 select min(Id) Id,Email from Person group by Email或者 Select min(Id) as Id,distinct Email from Person然后删除不在ID为此里面的值 delete from Person where Id not in(select Id from ( select min(Id…

高斯混合模型聚类_GMM: Gaussian Mixed Model(高斯混合模型)

0. 简介GMM和Kmeans一样也属于聚类&#xff0c;其算法训练流程也十分相似&#xff0c;Kmeans可认为是“硬聚类”&#xff0c;GMM是“软聚类”。给定数据集X&#xff0c;Kmeans算法流程是这样的----- a 初始化&#xff1a;随机初始k个中心&#xff08;即k个点&#xff0c;记为μ…

LetCode-算法-整数反转

首先此题是要整数反转123就要翻转成321 &#xff0c;23就是32 我们首先发现其中的规律 321 3X1022X1013X100 123反转成321 就是(123%10)X102(12%10)X102(1%10)X102 得出规律后我们就可以通过此规律写出方法了 如下: public class Solution {public int Reverse(int x) {int …

怎样下载安装python_Windows系统上如何安装Python和pip

系统环境&#xff1a; Windows 7 Pyhton 2.7.12 pip-8.1.2 1、下载安装包 python2.7.12安装包下载地址&#xff1a;pip安装包下载地址&#xff1a;2、安装Python a、双击下载后的安装包&#xff0c;一直点下一步即可。 b、配置Python的环境变量&#xff0c;操作如下&#xff1a…

ast.literal_eval(转)

eval函数在Python中做数据类型的转换还是很有用的。它的作用就是把数据还原成它本身或者是能够转化成的数据类型。那么eval和ast.literal_val()的区别是什么呢&#xff1f;本文将大家介绍关于Python中函数eval和ast.literal_eval区别的相关资料&#xff0c;需要的朋友可以参考下…

高德地图-2D地图下区域遮掩(只显示固定区域里的内容)

最近遇到一个新的需求需用用到高德地图 公司需要只显示固定区域范围的地图,其余地方的地图都用透明遮罩覆盖 完成后如下图所示: 地图体验网址 刚开始的时候研究了半天高德地图的的JS API中只有一个区域遮掩符合条件 但是区域遮掩这个代码有一个很重要的前提是必须使用3D地图&…

C# 淘宝商品微信返利助手开发-(八)微信号对接

系列教程一目录&#xff1a;返利助手原理 系列教程二目录&#xff1a;返利助手开放文档以及帐号申请地址 系列教程三目录&#xff1a;返利助手开发&#xff08;1&#xff09;API介绍 系列教程四目录&#xff1a;返利助手开发&#xff08;2&#xff09;淘宝分享的内容如何只取…

C# 制作不规则窗体的两种解决方案

我的广告单元&#xff0c;有空点一下哦&#xff0c;谢谢&#xff01; 冒着被拍砖的危险&#xff0c;投放到首页。C#制作不规则窗体应该又是一个老生常谈的问题了&#xff0c;可能很多老鸟会带BS的眼神&#xff0c;那么请老鸟们视该文章如浮云吧。 制作不规则窗体&#xff0c;本…

新概念英语第二册课文电子版_新概念英语第二册课文学生(Victoria)朗读

点击上"蓝字"关注我们专栏介绍【悦读时刻】是我们为中小学生在英语、语文朗读中的佼佼者开辟的专栏。我们会在优秀朗诵内容中进行优选之后上传发布。外研社新概念英语 II编者&#xff1a;何其莘 &L.G. AlexanderLONGMAN2简 介《新概念英语》(New Concept Engl…

C# 淘宝商品微信返利助手开发-(九)编写一个vue页面用于复制淘口令

系列教程一目录&#xff1a;返利助手原理 系列教程二目录&#xff1a;返利助手开放文档以及帐号申请地址 系列教程三目录&#xff1a;返利助手开发&#xff08;1&#xff09;API介绍 系列教程四目录&#xff1a;返利助手开发&#xff08;2&#xff09;淘宝分享的内容如何只取…

python color属性_使用Python制作一个带GUI界面的词云自动生成工具(连载七)

前几篇向大家介绍了词云自动生成工具&#xff08;GUI&#xff09;的详解GUI词云自动生成工具中词云属性设置界面的实现&#xff08;连载六&#xff09;。通过前面内容我们基本构建出了词云自动生成工具的主要框架。本篇结合tkinter中的filedialog和colorchooser的使用&#xff…

python爬取微博评论_用 python 爬取微博评论并手动分词制作词云

最近上海好像有举行个什么维吾尔族的秘密时装秀&#xff0c;很好看的样子&#xff0c;不过我还没时间看。但是微博上已经吵翻了天&#xff0c;原因是好吧&#xff0c;这不是我们关心的&#xff0c;我的心里只有学习我爱学习 Python 爬虫 本次爬取的是这条微博这条微博 微博的移…

公众号出现该公众号提供的服务出现故障分析

近日公众号出现了 出现该公众号提供的服务出现故障的错误提示 百度了一下这种错误的可能性 在这里插入图片描述 1. 程序后台未回复微信success 2. 5秒内无响应 3. 授权给了多个第三方平台&#xff0c;其中一个不可用。 4. ToUserName和 FromUserName 参数不正确无法找到接收…

数据结构之栈对逆BoLand表达式的计算

一. 后缀表达式: 后缀表达式,逆波兰表达式,是指运算符位于操作符之后,计算机对该式是从做到右进行计算,计算过程如下例子 二.计算思路 对于后缀表达式的计算,需要一个栈即可, 即遇见数字压栈,遇见运算符从栈中取出两个数,根据运算进行操作, 需要注意的是,减法以及除法都是后出栈…

c++ fork 进程时 共享内存_c/c++ Linux 进程间通信------共享内存

1. 什么是共享内存共享内存(Shared Memory)&#xff0c;指两个或多个进程共享一个给定的存储区。进程可以将同一段共享内存连接到它们自己的地址空间中&#xff0c;所有进程都可以访问共享内存中的地址&#xff0c;就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进…

python爬取新闻网站内容_python爬虫案例:抓取网易新闻

此文属于入门级级别的爬虫&#xff0c;老司机们就不用看了。 本次主要是爬取网易新闻&#xff0c;包括新闻标题、作者、来源、发布时间、新闻正文。 首先我们打开163的网站&#xff0c;我们随意选择一个分类&#xff0c;这里我选的分类是国内新闻。然后鼠标右键点击查看源代码&…

如何查看QQ和微信查看授权过那些应用?

平时生活中&#xff0c;要登录一些网站或者app时&#xff0c;为了省事儿&#xff0c;都用第三方登录&#xff0c;登录是简单快捷了一些 时间长了,授权过的那些应用都不知道了&#xff0c;甚至一些应用你没用去授权权限也一直开放给别人网站的 所以为了自己帐号的安全还是有必…