从零开始学Python(4) -----用Jupyter绘制各种图形

2023-11-13

在上一次学习中,我们介绍了如何加载CSV文件,并在Jupyter笔记本上绘制条形图。这次,我们将介绍如何从CSV文件中提取任意数据并绘制各种图形。

让我们看看股票是涨还是跌

之前,我们已经体验了用Pandas库来读取读取CSV数据并绘制图表。可以说,Pandas是一个非常强大的数据分析库。正如我们上次看到的那样,大家只需要简单的几行代码就能实现CSV文件的读取和表示。

现在,让我们进一步体验一下Pandas的强大功能吧。

import pandas as pd
df = pd.read_csv("stock.csv", encoding="GB2312")
df['成交笔数']
只显示成交笔数栏的数据

从程序中我们可以看到,使用pdf.read_csv方法来读取CSV文件时,可以获得DataFrame type类型的表格对象,然后通过df [“ column name”]的方式可以取得任意列的数据。

并且我们还可以对取得的各列的数据进行四则运算。接下来,让我们计算一下收盘价格和开盘价格之间的差吧(股票涨跌)。

 import pandas as pd
 df = pd.read_csv("stock.csv", encoding="GB2312")
 df["收盘价"] - df["开盘价"]
计算每天股价的涨跌

像这样,两个列之间通过运算符减号(-)连接,就可以计算出每一天的股价涨跌情况。

不过,仅仅用上面的方法的话,输出的结果比较难以理解。在这里我们可以给输出结果的每一列加上一个标题。另外,从上图可以看出,如果把所有记录都显示出来的话,输出结果会比较长,在这里我们可以指定要输出的记录条数。

%matplotlib inline
import pandas as pd
df = pd.read_csv("stock.csv", encoding="GB2312")
# 计算涨跌 --- (*1)
df['涨跌'] = df["收盘价"] - df["开盘价"]
# 排序 --- (*2)
df = df.sort_values(by=["涨跌"], ascending=False)
# 取得前10条 --- (*3)
top5 = df[0:5]
# 输出计算结果 --- (*4)
top5.plot.bar(y=["涨跌"], x="日期")
top5
显示涨幅最大的5天的数据

从上图可以看出,12/09和12/16两天的差价最大。言归正传,让我们来看看具体的代码。

在(* 1)部分,计算了收盘价和开盘价之间的差价。如前所述,使用Pandas,我们可以对指定的列进行数学计算,并且把计算的结果放到“涨跌”中,最后“涨跌”这一列会被添加到原始数据中。从上面的表格中我们可以看到,原始数据中的最后一列后面增加了“涨跌”列。

然后在(* 2)部分,我们以涨跌的幅度对数据进行了排列。

接下来在(* 3)部分中,把数据的前5条记录取出来赋给了变量top5。在Pandas检索指定范围的记录,请使用df [0:5]。这个表达式的意思是把第0行到第5行-1(即第4行)的记录取出来。

最后,在(* 4)部分,我们把取出的数据用表格和条形图的方式显示了出来。通过plot.bar方法,并指定x和y轴的数据序列就可以绘制出直观的条形图来了。

顺便问一下,如果先知道涨跌最小的记录,应该怎么办了?如果大家有兴趣的话,可以自己尝试修改一下代码。

提示:只需要在上面的代码中修改一个地方就可以实现!

以更易于理解的方式处理条形图

上面的图中,涨跌都是正的,如果有负的情况,怎么更好的通过图表显示出来呢?让我们编写一个图表,清楚地显示正增长和负增长之间的边界。

 %matplotlib inline
 import pandas as pd

 df = pd.read_csv("stock.csv", encoding="GB2312")
 # 计算涨跌
 df['涨跌'] = df["收盘价"] - df["开盘价"]
 df = df.sort_values(by=["涨跌"], ascending=False)
 # 取出涨幅正和负的数据 --- (*1)
 mid = df[10:20]

 # 设置条状图的格式为“ggplot” --- (*2)
 import matplotlib
 matplotlib.style.use('ggplot')
 # 显示条状图
 plt = mid.plot.bar(y=["涨跌"], x="日期")
 # 突出显示0界线 --- (*3)
 plt.axhline(0, color='k')

以一种易于理解的方式绘制正负边界

和上次的例子相比,这个例子的代码并没有太多的不同。让我们关注一下有差异的部分吧。

在(* 1)部分,我们取出了第10至20行的数据(从0开始计数)。

再让我们重点看一下(* 2)和(* 3)部分。用(* 2)部分就可以绘制出ggplot样式的漂亮图形。并且(* 3)部分,我们设置了Y轴的0轴边界线的格式。

试试用饼图来显示涨幅数据

接下来,让我们用饼图来看看涨幅前五的数据吧。

 %matplotlib inline
 import pandas as pd
 import matplotlib
 matplotlib.style.use('ggplot')

 df = pd.read_csv("stock.csv", encoding="GB2312")
 # 计算涨跌,并进行排序
 df['涨跌'] = df["收盘价"] - df["开盘价"]
 df = df.sort_values(by=["涨跌"], ascending=False)
 # 取出前5条数据
 top = df[0:5]
 # 绘制饼图 --- (*1)
 top["涨跌"].plot.pie(labels=top["日期"], autopct='%.0f')
用饼图显示涨跌前五的数据

这表明东京的增长率惊人。并与爱知县和Sa玉县继续。

(* 1)部分的代码是绘制饼图的代码。到目前为止,把之前绘制条状图的plot.bar修改为plot.pie。此外,通过参数labels可以给饼图添加标签,并且通过参数autopct就可以显示百分比了。

同理,我们也可以绘制出line/barh/hist/box/kde/area/scatter/hexbin等各种图。有关详细信息,请查阅

Pandas手册

总结

在上一次学习的的基础上,我们运用了各种图表来显示股价相关数据。

这次学习的例子中,不管哪个例子,我们都只用了10行左右的代码就可以用表格或图形来显示我们想知道的数据。并且运用Pandas库,我们还可以简单的进行四则运算。

通过这两次的学习,想必大家已经体会到使用Pandas和Jupyter笔记本,您可以绘制出很多更有意义的图形。所以大家可以参考这两次学习的例子,尝试对自己工作中的数据进行数据分析和可视化吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从零开始学Python(4) -----用Jupyter绘制各种图形 的相关文章

随机推荐

  • 华南x79 主板说明书下载_主板说明书找不到 机箱连线照样秒安装

    点击上方 电脑爱好者关注我们 小伙伴们在安装 升级电脑的时候 在主板上安装各种配件应该问题不大 但是连线呢 特别是机箱上那些细碎的小接口们 即使照着说明书都要琢磨半天 如果是老主板 一下子找不到说明书怎么办 这里小编就跟大家说一些简单的办法
  • windows上 nginx 配置好了access.log路径后,但是访问日志并没有记录

    windows 上配置 nginx access log 日志 1 问题 2 解决方案 2 1 为当前文件夹配置权限 3 结果 1 问题 之前 本机上配置了 nginx access log 日志 但是 并没有 记录 当时因为太忙了 就没有
  • 【Mybatis源码分析】动态标签的底层原理,DynamicSqlSource源码分析

    DynamicSqlSource 源码分析 一 DynamicSqlSource 源码分析 DynamicContext源码分析 SqlNode源码分析 动态SQL标签 Mybatis 动态SQL标签 举例 调试 SqlNode源码分析 M
  • Ubuntu/Linux下安装DosBox配置汇编环境

    Ubuntu Linux下安装DosBox配置汇编环境 微信关注公众号 夜寒信息 致力于为每一位用户免费提供更优质技术帮助与资源供给 感谢支持 一 首先我们去DosBox官网下载DosBox 0 73 或者直接启用终端命令行输入以下代码 s
  • leveldb深度剖析-查询流程

    至此 将插入流程以及压缩流程都已介绍完毕了 本篇主要介绍查询流程 一 查询流程 首先来看一下查询接口具体实现内容 查询 param options 查询选项 param key 查询key param value 输出参数 如果找到则赋值给
  • TypeScript 基础教程,适合新手

    TypeScript 基本用法 本章介绍 TypeScript 的一些最基本的语法和用法 最全教程 https tut qzxdp cn typescript 在线工具 https tools qzxdp cn 类型声明 TypeScrip
  • 本地部署IIS服务及MQTT服务

    本地部署IIS服务及MQTT服务 概述 配置IIS 安装windows功能 配置应用程序 打开IIS服务 安装aspnetcore runtime 安装dotnet hosting 检查 添加网站 配置应用程序 配置IIS通过外部IP访问
  • YOLOv5 or YOLOv8 快速划分训练集 验证集 测试集

    该脚本实现了将原始数据集自动划分为yolo训练数据集排列形式 import os import random import shutil 该脚本实现了将原始数据集自动划分为yolo训练数据集排列形式 目录排序如下 old root data
  • 【mind+】机器人对话互动游戏编程

    目录 前言 不要多言 请看下面的代码 一 代码 1 机器人回答问题 2 机器人互动和状态改变 前言 应用mind 软件写一个机器人互动的程序 程序要求 1 提出问题 机器人做出相对应的回答 2 点击机器人 它做出随机语录回复 提前准备 添加
  • 【SSL_1232】雷达覆盖

    思路 以一个点作为平角 计算几何统计 c o d e code code include
  • 在虚拟机中win10启用远程桌面的方法

    1 打开虚拟机 选择此电脑 右键属性 2 选择远程桌面 开启服务 3 打开cmd 输入ipconfig 查看IP 4 在宿主机上按住win r快捷键 输入matsc 打开远程桌面连接 输入虚拟机的ip 5 输入虚拟机的用户名和密码 6 连接
  • 虚拟机网络桥接,详细操作步骤,本地连接虚拟机

    虚拟机网络桥接 文章目录 虚拟机网络桥接 一 首先查看主机连接网络的网关 二 打开虚拟机的worksation服务 三 修改主机的VMnet8的IPV4属性 四 修改虚拟机的workstation的虚拟网络 五 修改VMnet8的IP 网关
  • ATK&ck靶场系列二

    信息收集 nmap sP 192 168 111 0 24 nmap sS T4 A v p 192 168 111 80 nmap sS T4 A v p 192 168 111 80 Starting Nmap 7 93 https n
  • 录音时分离左右声道的数据

    平台录音默认为8通道数据 保存到文件中取左右声道数据 当mic 1时 取左声道数据 当mic 2时 取右声道数据 private byte splitStereoPcm byte data int monoLength data lengt
  • Spring Bean基础

    Spring Bean基础 1 1 定义Spring Bean 1 1 1 什么是BeanDefinition 1 2 通过BeanDefinition构建Bean 1 3 注册Bean BeanDefinition 注册 1 4 实例化S
  • SQL中按分隔符拆分字符串

    一 Oracle数据库按分隔符拆分字符串 1 应用函数 REGEXP SUBSTR 2 语法 REGEXP SUBSTR String pattern position occurrence modifier 3 参数解释 srcstr 需
  • 【计算机操作系统】第三章 处理机调度与死锁

    在多道程序环境下 主存中有着多个进程 其数目往往多于处理机数目 这就要求系统能按某种算法 动态地把处理机分配给就绪队列中的一个进程 使之执行 分配处理机的任务是由处理机调度程序完成的 由于处理机是最重要的计算机资源 提高处理机的利 用率及改
  • spring boot引入mybatis plus,使用通用mapper、service

    一 mybatis plus官方文档 mybatis plus官方文档 二 spring boot 引入mybatis plus 在指定项目的pom xml文件下添加以下代码
  • JMeter 5.3/MeterSphere v1.1.2接口测试工具安装

    最近工作需要对web服务接口进行压力测试 由于完全没有测试相关经验 就只能走一步看一步了 由于主要是测试接口的并发性能 因而需要一个能并发产生请求的工具 最开始想到用postman 毕竟对这玩意儿比较了解 但是结果是 这个东西虽然能够在短时
  • 从零开始学Python(4) -----用Jupyter绘制各种图形

    在上一次学习中 我们介绍了如何加载CSV文件 并在Jupyter笔记本上绘制条形图 这次 我们将介绍如何从CSV文件中提取任意数据并绘制各种图形 让我们看看股票是涨还是跌 之前 我们已经体验了用Pandas库来读取读取CSV数据并绘制图表