Python 使用Matplotlib,可视化CSV数据

Python 使用Matplotlib,可视化CSV数据,python,csv,matplotlib,Python,Csv,Matplotlib,这是一个新问题,与这个问题密切相关 我想用Matplotlib可视化CSV数据 下面是我的代号1.30min.py import matplotlib.pyplot as plt from matplotlib import style import numpy as np style.use('ggplot') x,y =np.loadtxt('total_watt.csv', unpack = True, delimiter

这是一个新问题,与这个问题密切相关

我想用Matplotlib可视化CSV数据

下面是我的代号
1.30min.py

import matplotlib.pyplot as plt
from matplotlib import style
import numpy as np

style.use('ggplot')

x,y =np.loadtxt('total_watt.csv',
                unpack = True,
                delimiter = ',')

plt.plot(x,y)

plt.title('Example')
plt.ylabel('Y axis')
plt.xlabel('X axis')

plt.show()
当我执行
1.30min.py
时,我收到以下错误消息

(DataVizProj)Soma-Suzuki:Soma Suzuki$ python 1.30mins.py
Traceback (most recent call last):
  File "1.30mins.py", line 10, in <module>
    delimiter = ',')
  File "/Users/Suzuki/Envs/DataVizProj/lib/python2.7/site-packages/numpy/lib/npyio.py", line 856, in loadtxt
    items = [conv(val) for (conv, val) in zip(converters, vals)]
ValueError: invalid literal for float(): 2011-04-18 13:22:00
就我自己搜索而言,我需要添加
转换器
或,
%y-%m-%t
 我的节目

我的python版本是2.76
我的matpltlib版本是1.42

我不知道numpy是否具有直接读取datetime对象的功能。然而,如果您不是在寻找一个优雅的解决方案,这里有一些快速而肮脏的代码,可以使用另外两个模块csv和datetime来完成您想要的工作

我使用文件“sample.csv”(注意我在其中放置了逗号):

代码是

     from matplotlib import style
     from matplotlib import pylab as plt
     import numpy as np

     style.use('ggplot')

     filename='sample.csv'
     date=[]
     number=[]

     import csv
     with open(filename, 'rb') as csvfile:
         csvreader = csv.reader(csvfile, delimiter=',', quotechar='|')
         for row in csvreader:
             if len(row) ==2 :
                 date.append(row[0])
                 number.append(row[1])

     number=np.array(number)

     import datetime
     for ii in range(len(date)):
         date[ii]=datetime.datetime.strptime(date[ii], '%Y-%m-%d %H:%M:%S')

     plt.plot(date,number)

     plt.title('Example')
     plt.ylabel('Y axis')
     plt.xlabel('X axis')

     plt.show()
给我下面的图表。


如果您正在寻找使用numpy的更优雅的解决方案,我相信有人会知道更好的方法

我不知道numpy是否具有直接读取datetime对象的功能。然而,如果您不是在寻找一个优雅的解决方案,这里有一些快速而肮脏的代码,可以使用另外两个模块csv和datetime来完成您想要的工作

我使用文件“sample.csv”(注意我在其中放置了逗号):

代码是

     from matplotlib import style
     from matplotlib import pylab as plt
     import numpy as np

     style.use('ggplot')

     filename='sample.csv'
     date=[]
     number=[]

     import csv
     with open(filename, 'rb') as csvfile:
         csvreader = csv.reader(csvfile, delimiter=',', quotechar='|')
         for row in csvreader:
             if len(row) ==2 :
                 date.append(row[0])
                 number.append(row[1])

     number=np.array(number)

     import datetime
     for ii in range(len(date)):
         date[ii]=datetime.datetime.strptime(date[ii], '%Y-%m-%d %H:%M:%S')

     plt.plot(date,number)

     plt.title('Example')
     plt.ylabel('Y axis')
     plt.xlabel('X axis')

     plt.show()
给我下面的图表。


如果您正在寻找使用numpy的更优雅的解决方案,我相信有人会知道更好的方法

我不知道numpy是否具有直接读取datetime对象的功能。然而,如果您不是在寻找一个优雅的解决方案,这里有一些快速而肮脏的代码,可以使用另外两个模块csv和datetime来完成您想要的工作

我使用文件“sample.csv”(注意我在其中放置了逗号):

代码是

     from matplotlib import style
     from matplotlib import pylab as plt
     import numpy as np

     style.use('ggplot')

     filename='sample.csv'
     date=[]
     number=[]

     import csv
     with open(filename, 'rb') as csvfile:
         csvreader = csv.reader(csvfile, delimiter=',', quotechar='|')
         for row in csvreader:
             if len(row) ==2 :
                 date.append(row[0])
                 number.append(row[1])

     number=np.array(number)

     import datetime
     for ii in range(len(date)):
         date[ii]=datetime.datetime.strptime(date[ii], '%Y-%m-%d %H:%M:%S')

     plt.plot(date,number)

     plt.title('Example')
     plt.ylabel('Y axis')
     plt.xlabel('X axis')

     plt.show()
给我下面的图表。


如果您正在寻找使用numpy的更优雅的解决方案,我相信有人会知道更好的方法

我不知道numpy是否具有直接读取datetime对象的功能。然而,如果您不是在寻找一个优雅的解决方案,这里有一些快速而肮脏的代码,可以使用另外两个模块csv和datetime来完成您想要的工作

我使用文件“sample.csv”(注意我在其中放置了逗号):

代码是

     from matplotlib import style
     from matplotlib import pylab as plt
     import numpy as np

     style.use('ggplot')

     filename='sample.csv'
     date=[]
     number=[]

     import csv
     with open(filename, 'rb') as csvfile:
         csvreader = csv.reader(csvfile, delimiter=',', quotechar='|')
         for row in csvreader:
             if len(row) ==2 :
                 date.append(row[0])
                 number.append(row[1])

     number=np.array(number)

     import datetime
     for ii in range(len(date)):
         date[ii]=datetime.datetime.strptime(date[ii], '%Y-%m-%d %H:%M:%S')

     plt.plot(date,number)

     plt.title('Example')
     plt.ylabel('Y axis')
     plt.xlabel('X axis')

     plt.show()
给我下面的图表。

如果您正在寻找使用numpy的更优雅的解决方案,我相信有人会知道更好的方法

您的数据

2011-04-18 21:22:00 659.670303375527
2011-04-18 21:52:00 576.304871428571
...
不由空格或逗号分隔。它可以被视为具有固定宽度 但是。可以读取固定宽度的数据。而不是通过考试 字符串到分隔符,传递表示每个字符宽度的整数序列 场


屈服 您的数据

2011-04-18 21:22:00 659.670303375527
2011-04-18 21:52:00 576.304871428571
...
不由空格或逗号分隔。它可以被视为具有固定宽度 但是。可以读取固定宽度的数据。而不是通过考试 字符串到分隔符,传递表示每个字符宽度的整数序列 场


屈服 您的数据

2011-04-18 21:22:00 659.670303375527
2011-04-18 21:52:00 576.304871428571
...
不由空格或逗号分隔。它可以被视为具有固定宽度 但是。可以读取固定宽度的数据。而不是通过考试 字符串到分隔符,传递表示每个字符宽度的整数序列 场


屈服 您的数据

2011-04-18 21:22:00 659.670303375527
2011-04-18 21:52:00 576.304871428571
...
不由空格或逗号分隔。它可以被视为具有固定宽度 但是。可以读取固定宽度的数据。而不是通过考试 字符串到分隔符,传递表示每个字符宽度的整数序列 场


屈服

您的错误与尝试读取的文件无关,而是与matplotlib有关。您使用的是哪个版本的python和matplotlib?第二,我建议您尝试为您的数据使用,并从上一列中删除
。我的matplotlib版本是;>>>将matplotlib导入为mpl>>>打印mpl.\uuuuu版本\uuuuuuu 1.4.2,我的python版本为;(DataVizProj)Soma Suzuki:~Suzuki$python-V python 2.7.6I收到另一个错误,名称为“ValueError:invalid literal for float():2011-04-18 21:22:00 659.670303375527”。我使用Python2.7.6和Matplotlib 1.4.3,导入样式没有问题。另外,请注意,您的代码中没有定义plt。感谢我定义了“plt”,并将其添加到我的问题中。我还遇到了另一个错误。我编辑了我的问题您的错误与您试图读取的文件无关,而是与matplotlib有关。您使用的是哪个版本的python和matplotlib?第二,我建议您尝试为您的数据使用,并从上一列中删除
。我的matplotlib版本是;>>>将matplotlib导入为mpl>>>打印mpl.\uuuuu版本\uuuuuuu 1.4.2,我的python版本为;(DataVizProj)Soma Suzuki:~Suzuki$python-V python 2.7.6I收到另一个错误,名称为“ValueError:invalid literal for float():2011-04-18 21:22:00 659.670303375527”。我使用Python2.7.6和Matplotlib 1.4.3,导入样式没有问题。另外,请注意,您的代码中没有定义plt。感谢我定义了“plt”,并将其添加到我的问题中。我还遇到了另一个错误。我编辑了我的问题您的错误与您试图读取的文件无关,而是与matplotlib有关。您使用的是哪个版本的python和matplotlib?第二,我建议您尝试为您的数据使用,并从上一列中删除
。我的matplotlib版本是;>>>将matplotlib导入为mpl>>>打印mpl.\uuuuu版本\uuuuuuu 1.4.2,我的python版本为;(DataVizProj)Soma Suzuki:~Suzuki$python-V python 2.7.6I收到另一个错误,名称为“ValueError:invalid literal for float():2011-04-18 21:22:00 659.670303375527”。我使用Python2.7.6和Matplotlib 1.4.3,导入样式没有问题。另外,请注意,您的代码中没有定义plt。感谢我定义了“plt”,并将其添加到我的问题中。我还遇到了另一个错误。我编辑了我的问题您的错误与您试图读取的文件无关,而是与matplotlib有关。您使用的是哪个版本的python和matplotlib?其次,我会