鱼C论坛

 找回密码
 立即注册
查看: 2880|回复: 2

matplotlib中时间格式问题

[复制链接]
发表于 2018-1-24 16:44:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wiwi8742 于 2018-1-25 10:19 编辑

学习matplotlib中,提取txt文件中日期列的时候提示:TypeError: strptime() argument 0 must be str, not <class 'bytes'>  。
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import matplotlib.dates as mdates
  4. date1,start1,end1=np.loadtxt('指数.txt',delimiter=',',converters={0:mdates.strpdate2num('%Y-%M-%D')},skiprows=1,usecols=(0,1,3),unpack=True)
复制代码


网上看了说编译器在打开文件时,将表格里的第一列值是日期格式字符串,但因为我们是以二进制编码的格式打开第一列值是,返回的值字节字符串bytes,所以需要把它便会string,则对字符串解码用函数decode('asii'),变成string格式。又提示:AttributeError: module 'datetime' has no attribute 'strptime'
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import matplotlib.dates as mdates
  4. import datetime
  5. def dates2num(s):
  6.     return datetime.strptime(s,'%Y-%m-%d')
  7. date1,start1,end1=np.loadtxt('指数.txt',delimiter=',',converters={0:dates2num},skiprows=1,usecols=(0,1,3),unpack=True)
复制代码


倒腾了一个下午,不得其解,python小白,求大神帮忙看下,拜谢!!
指数.txt (4.22 KB, 下载次数: 2)


网上倒腾了半个早上,终于找到解决办法,将mdates.strpdate2num改成mdates.bytespdate2num即可。
Use this class to parse date strings to matplotlib datenums when you know the date format string of the date you are parsing.
我的理解mdates.strpdate2num 是规范格式使matplotlib能识别,mdates.bytespdate2num bytes转str。

  1. import numpy as np
  2. import matplotlib.dates as mdates
  3. import matplotlib.pyplot as plt
  4. ddate,dopen,dclose =  np.loadtxt('test.txt', delimiter=',', skiprows=1,
  5.                           converters={0:mdates.bytespdate2num('%Y/%m/%d')},
  6.                           usecols= (0,1,3), unpack=True)
  7. #plt.plot(ddate,dopen)
  8. #plt.plot(ddate,dclose)
  9. plt.plot_date(ddate,dopen,linestyle="-",color='red',label='趋势图')
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-24 17:02:38 | 显示全部楼层
本帖最后由 sky 于 2018-1-24 17:05 编辑

time.strptime或者datetime.datetime.strptime
把import datetime 改成 from datetime import datetime
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-25 09:51:32 | 显示全部楼层
sky 发表于 2018-1-24 17:02
time.strptime或者datetime.datetime.strptime
把import datetime 改成 from datetime import datetime

你说的办法我试了还是不行哦。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-27 10:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表