|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wiwi8742 于 2018-1-25 10:19 编辑
学习matplotlib中,提取txt文件中日期列的时候提示:TypeError: strptime() argument 0 must be str, not <class 'bytes'> 。
- import numpy as np
- import matplotlib.pyplot as plt
- import matplotlib.dates as mdates
- 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'。
- import numpy as np
- import matplotlib.pyplot as plt
- import matplotlib.dates as mdates
- import datetime
- def dates2num(s):
- return datetime.strptime(s,'%Y-%m-%d')
- 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。
- import numpy as np
- import matplotlib.dates as mdates
- import matplotlib.pyplot as plt
- ddate,dopen,dclose = np.loadtxt('test.txt', delimiter=',', skiprows=1,
- converters={0:mdates.bytespdate2num('%Y/%m/%d')},
- usecols= (0,1,3), unpack=True)
- #plt.plot(ddate,dopen)
- #plt.plot(ddate,dclose)
- plt.plot_date(ddate,dopen,linestyle="-",color='red',label='趋势图')
复制代码
|
|