1.方法一:xlwt

1.1 安装包

  1. pip install xlwt

1.2 保存数据到 Excel

  1. import xlwt
  2. import numpy as np
  3. import random
  4. # 新建表格
  5. book = xlwt.Workbook(encoding='utf-8', style_compression=0)
  6. sheet = book.add_sheet('mysheet', cell_overwrite_ok=True) #设置多个sheet
  7. # 往第一行写入名称
  8. sheet.write(0, 0, "espisode")
  9. sheet.write(0, 1, "reward")
  10. episode=100
  11. reward=random.sample(range(50, 150), episode)
  12. for i in range(100):
  13. # 将数据写入前两列
  14. sheet.write(i+1, 1, reward[i]) # 第i+1行0列
  15. sheet.write(i+1, 0, i+1) # 第i+1行1列
  16. # 保存表格
  17. book.save('data.xls')

效果:

2. 方法二:openpyxl

  1. pip install openpyxl
  1. from openpyxl import Workbook
  2. #新建对象
  3. wb=Workbook()
  4. #激活sheet
  5. sheet=wb.active
  6. #给sheet一个名字
  7. sheet.title='mysheet'
  8. # 增加一行的语法是
  9. # sheet.append(一维的list或tuple)
  10. sheet.append(['编号','姓名','年龄','性别'])
  11. sheet.append([1,'556',20,'男'])
  12. sheet.append([2,'770',22,'男'])
  13. # 保存
  14. wb.save('test.xlsx')

效果:

2.1 超详细例子

自己代码例子:数据过大保存到第三四列

  1. def save(train_episode, test_episode, train_reward, evaluate_reward):
  2. book = xlwt.Workbook(encoding='utf-8', style_compression=0)
  3. sheet = book.add_sheet('train', cell_overwrite_ok=True) # 设置多个sheet
  4. sheet2 = book.add_sheet('evaluate', cell_overwrite_ok=True)
  5. # 往第一行写入名称
  6. sheet.write(0, 0, "train_episode")
  7. sheet.write(0, 1, "train_reward")
  8. for i in train_episode:
  9. # 将数据写入前两列
  10. sheet.write(i+1, 1, train_reward[i]) # 第i+1行0列
  11. sheet.write(i+1, 0, i+1) # 第i+1行1列
  12. if i >=60000:
  13. sheet.write(0, 2, "train_episode")
  14. sheet.write(0, 3, "train_reward")
  15. for j in (train_episode-60000):
  16. sheet.write(j+1, 3, train_reward[i]) # 第i+1行0列
  17. sheet.write(j+1, 2, train_episode) # 第i+1行1列
  18. sheet2.write(0, 0, "episode")
  19. sheet2.write(0, 1, "evaluate_reward")
  20. for k in test_episode:
  21. # 将数据写入前两列
  22. sheet.write(k+1, 1, evaluate_reward[k]) # 第i+1行0列
  23. sheet.write(k+1, 0, k+1) # 第i+1行1列
  24. # 保存表格
  25. book.save('reward.xls')

3.xlrd读取excel文件并画图

3.1 安装以及相关报错

  1. pip install xlrd

值得注意的是:文件格式要保存为xls【excel数据存储另存为xls比较稳妥】,直接改后缀名可能还会报错,报错如下:

Excel xlsx file; not supported

Unsupported format, or corrupt file: Expected BOF record; found b'<?xml ve'

3.2 代码例子:

  1. import xlwt
  2. import random
  3. import matplotlib.pyplot as plt
  4. import xlrd
  5. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  6. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
  7. x_data=[]
  8. y_data=[]
  9. data = xlrd.open_workbook('text.xls')
  10. table = data.sheets()[0]
  11. cap = table.col_values(1) #读取第二列数据
  12. cap1 = table.col_values(0)#读取第一列数据
  13. #print(cap) #打印出来检验是否正确读取
  14. for i in range(0,998):
  15. y_data.append(cap[i])
  16. x_data.append(cap1[i]*50) #对第一列数据扩大50倍
  17. plt.plot(x_data, y_data,color="#006bac")
  18. plt.title('标题')
  19. plt.legend()#标签
  20. plt.xlabel('episodes')
  21. plt.ylabel('Average reward')
  22. plt.show()

3.3 代码多图例子

  1. import xlrd
  2. import matplotlib.pyplot as plt
  3. #调节字体
  4. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  5. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
  6. #导入excel文件,以及第几张表
  7. data = xlrd.open_workbook('GDP2(已自动还原).xls')
  8. table = data.sheets()[0]
  9. #第一个图的数据
  10. t1 = table.col_values(1)
  11. tt = t1[1:90]
  12. xAxis1 = range(1929,2018)
  13. #第二个图的数据
  14. t2 = table.col_values(2)
  15. tu = t2[27:90]
  16. xAxis2 = range(1955,2018)
  17. #第三个图的数据
  18. t3 = table.col_values(3)
  19. tv = t3[20:90]
  20. xAxis3 = range(1948,2018)
  21. #第四个图的数据
  22. t4 = table.col_values(4)
  23. tw = t4[42:90]
  24. xAxis4 = range(1970,2018)
  25. #作图
  26. plt.plot(xAxis1, tt, label='美国GDP')
  27. plt.plot(xAxis2, tu, label='日本GDP')
  28. plt.plot(xAxis3, tv, label='英国GDP')
  29. plt.plot(xAxis4, tw, label='韩国GDP')
  30. plt.xlabel('年份')
  31. plt.ylabel('GDP现价')
  32. plt.title("各国GDP的变化")
  33. plt.legend()
  34. plt.show()

Python xlwt数据保存到 Excel中以及xlrd读取excel文件画图的更多相关文章

  1. Python将数据保存到CSV中

    #coding:utf-8import csv headers = ['ID','UserName','Password','Age','Country'] rows = [(1001,'qiye', ...

  2. Python爬虫数据保存到MongoDB中

    MongoDB是一款由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储方式类似于JSON对象,它的字段值可以是其它文档或数组,但其数据类型只能是String文本型. ...

  3. 1.scrapy爬取的数据保存到es中

    先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index.     from datetime import datetime fr ...

  4. Excel文件数据保存到SQL中

    1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="st ...

  5. 将爬取的数据保存到mysql中

    为了把数据保存到mysql费了很多周折,早上再来折腾,终于折腾好了 安装数据库 1.pip install pymysql(根据版本来装) 2.创建数据 打开终端 键入mysql -u root -p ...

  6. c# 抓取和解析网页,并将table数据保存到datatable中(其他格式也可以,自己去修改)

    使用HtmlAgilityPack 基础请参考这篇博客:https://www.cnblogs.com/fishyues/p/10232822.html 下面是根据抓取的页面string 来解析并保存 ...

  7. Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。

    maven使用: <!--redis jar包--> <dependency> <groupId>redis.clients</groupId> < ...

  8. [python]mysql数据缓存到redis中 取出时候编码问题

    描述: 一个web服务,原先的业务逻辑是把mysql查询的结果缓存在redis中一个小时,加快请求的响应. 现在有个问题就是根据请求的指定的编码返回对应编码的response. 首先是要修改响应的bo ...

  9. 在scrapy中将数据保存到mongodb中

    利用item pipeline可以实现将数据存入数据库的操作,可以创建一个关于数据库的item pipeline 需要在类属性中定义两个常量 DB_URL:数据库的URL地址 DB_NAME:数据库的 ...

  10. Python用xlrd读取Excel数据到list中再用xlwt把数据写入到新的Excel中

    一.先用xlrd读取Excel数据到list列表中(存入列表中的数据如下图所示) import xlrd as xd #导入需要的包 import xlwt data =xd.open_workboo ...

随机推荐

  1. MM01 物料主数据批导

    1业务场景 期初批量导入物料主数据时,有以下要求: 维护相应的物料视图 将物料维护到多个工厂 可能需要对物料进行分割评估 对某些字段,需要在BAPI中做增强处理进行维护 2代码实现 2.1物料基本数据 ...

  2. Educational Codeforces Round 93 (Rated for Div. 2)

    Educational Codeforces Round 93 (Rated for Div. 2) A. Bad Triangle input 3 7 4 6 11 11 15 18 20 4 10 ...

  3. vue学习笔记 八、toRef的使用

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  4. 银行个人住房贷款LPR办理流程-建行app

    8月底之前即将需完成银行的个人住房贷款定价基准利率的转换.选择"LPR+浮动利率"或者"固定利率". 以下举例建行app上办理方法给大家参考下. 办理方案: 一 ...

  5. 万字血书Vue—走近Vue

    Vue是什么? Vue是一套用于构建用户界面的渐进式JavaScript框架 构建用户界面:用vue往html页面中填充数据 渐进式:Vue可以自底向上逐层的应用,从轻量小巧核心库的简单应用,到引入各 ...

  6. citespace 文献计量工具初探

    先放几个教程: 知乎 - CiteSpace 使用教程 - 312 赞同 知乎 - CiteSpace 入门教程 - 949 赞同 简书 - 研究方法 | 用 CiteSpace 进行科学文献可视化分 ...

  7. Seata 分布式事务解决方案及特点

    本文为博主原创,未经允许不得转载: 目录: 1. Seata官方链接 2. Seata的三大角色 3.Seata 常见分布式事务解决方案 4. 2PC两阶段提交协议 5. 2PC 的问题 6. AT模 ...

  8. C++初始化列表时,形参和实参名可以一样,编译器可以识别

    在这里初始化列表直接用age(age)即可,用this->age(age)反而会出错,C++不允许在成员初始化列表中使用this关键字来初始化类成员 class Person { public: ...

  9. 【java】设置 tomcat 账号密码

    <role rolename="manager-gui"/> <user username="tomcat" password="t ...

  10. 左值,右值,引用,指针,常量,auto如何组合?

    左值,右值,引用,指针,常量,auto如何组合? 左值引用:int &a = b; 左值引用是通过使用&符号来声明的,例如int &a. 左值引用用于绑定到左值(可标识的.持久 ...