鱼C论坛

 找回密码
 立即注册
查看: 3581|回复: 4

[已解决]python3,Matplotlib求救

[复制链接]
发表于 2016-6-19 11:44:35 | 显示全部楼层 |阅读模式
12鱼币
请教各位大神,事情背景是这样的:
我为了在python3上做数据分析,
使用了Matplotlib.dates库的strp2num方法,从csv文件中读取日期数据并转化为float用来分析。
我套用python2中的写法——
date,o,c=np.loadtxt('F:\\1\\sh.csv',delimiter=',',converters={'0':mdates.strpdate2num('%Y-%m-%d')},usecols=(0,1,3),skiprows=1,unpack=True)
然而,抛出了ValueError: could not convert string to float: b'2016-06-17'异常。
想找出问题所在,却苦于搜遍全网没有答案,用help(matplotlib.dates.strpdate2num)查看帮助也没有看到只言片语告诉我到底怎么写
微信截图_20160619113828.png

我的代码

我的代码

只好求救于咱们论坛的大神
最佳答案
2016-6-19 11:44:36
本帖最后由 SixPy 于 2016-9-28 17:09 编辑
CasUal000 发表于 2016-6-19 11:47
起初写的是date,o,c=np.loadtxt('F:\\1\\sh.csv',delimiter=',',converters={0:mdates.strpdate2num('%Y-%m ...


中间需要将 bytes 转换为 str
  1. import matplotlib.dates as mdates
  2. import numpy as np

  3. sdata = '''
  4. 2016-05-01,111
  5. 2016-05-02,222
  6. 2016-05-03,333'''

  7. with open('data.csv','w')as w:
  8.     w.write(sdata)

  9. def bytedate2num(fmt):
  10.     def converter(b):
  11.         return mdates.strpdate2num(fmt)(b.decode('ascii'))
  12.     return converter

  13. data = np.loadtxt('data.csv',
  14.                   dtype=np.int32,
  15.                   delimiter=',',
  16.                   converters={0:bytedate2num('%Y-%m-%d')})

  17. print(data)
复制代码

结果:
  1. [[736085    111]
  2. [736086    222]
  3. [736087    333]]
复制代码

最佳答案

查看完整内容

中间需要将 bytes 转换为 str 结果:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-19 11:44:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 SixPy 于 2016-9-28 17:09 编辑
CasUal000 发表于 2016-6-19 11:47
起初写的是date,o,c=np.loadtxt('F:\\1\\sh.csv',delimiter=',',converters={0:mdates.strpdate2num('%Y-%m ...


中间需要将 bytes 转换为 str
  1. import matplotlib.dates as mdates
  2. import numpy as np

  3. sdata = '''
  4. 2016-05-01,111
  5. 2016-05-02,222
  6. 2016-05-03,333'''

  7. with open('data.csv','w')as w:
  8.     w.write(sdata)

  9. def bytedate2num(fmt):
  10.     def converter(b):
  11.         return mdates.strpdate2num(fmt)(b.decode('ascii'))
  12.     return converter

  13. data = np.loadtxt('data.csv',
  14.                   dtype=np.int32,
  15.                   delimiter=',',
  16.                   converters={0:bytedate2num('%Y-%m-%d')})

  17. print(data)
复制代码

结果:
  1. [[736085    111]
  2. [736086    222]
  3. [736087    333]]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-6-19 11:47:18 | 显示全部楼层
起初写的是date,o,c=np.loadtxt('F:\\1\\sh.csv',delimiter=',',converters={0:mdates.strpdate2num('%Y-%m-%d')},usecols=(0,1,3),skiprows=1,unpack=True),抛出异常说TypeError: strptime() argument 0 must be str, not <class 'bytes'>。而后把0写成了'0'  ,然后抛出了现在看到的异常:ValueError: could not convert string to float: b'2016-06-17'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-19 21:06:25 | 显示全部楼层
论坛里面暂时没有发现学Matplotlib的,楼主可以到stackoverflow去看看哦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-5 17:16:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-2 06:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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