2017-06-13 10 views
-2

データはcsvファイルから得られたもので、私はpandasで読みました。私はpyplotをプロットするために使用しました。時間はx、時間はy、風速。問題は選択やインデックス作成が原因であると私は思う。私は行22-25からのデータを必要とし、それをプロットします。ここでは、データとコードは次のとおりです。float()のリテラルが無効です:01/06/2017 22:00

 time    Unnamed: 2 
22 01/06/2017 13:00 23 
23 01/06/2017 16:00 22 
24 01/06/2017 19:00 15 
25 01/06/2017 22:00 10 


import pandas as pd 
import matplotlib.pyplot as plt 
a = pd.read_csv('J:/internship/forecast/6.1/forecast_report_Bahrain.csv') 
m10wind = a['Unnamed: 2'][22:26] 
time= a['time'][22:26] 
fig, ax = plt.subplots() 
fig,ax.set_xlabel("Time(+3UTC)") 
fig,ax.set_ylabel("10m wind speed (knots)") 
ax.plot(time, m10wind, 'r', label='GFS Forecast') 
leg = ax.legend(loc=2, bbox_to_anchor=(1.05, 1.0)) 
plt.savefig('1st June wind of Bahrain.png', bbox_inches='tight') 
plt.show() 

完全なエラーメッセージ:(おそらく)

Traceback (most recent call last): 

    File "<ipython-input-37-9ab81b2b3775>", line 1, in <module> 
    runfile('C:/Users/xiaoshen.sun/.spyder/temp.py', wdir='C:/Users/xiaoshen.sun/.spyder') 

    File "C:\tools\Python2.7\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile 
    execfile(filename, namespace) 

    File "C:\tools\Python2.7\lib\site-packages\spyder\utils\site\sitecustomize.py", line 87, in execfile 
    exec(compile(scripttext, filename, 'exec'), glob, loc) 

    File "C:/Users/xiaoshen.sun/.spyder/temp.py", line 18, in <module> 
    ax.plot(time, m10wind, 'r', label='GFS Forecast') 

    File "C:\tools\Python2.7\lib\site-packages\matplotlib\__init__.py", line 1891, in inner 
    return func(ax, *args, **kwargs) 

    File "C:\tools\Python2.7\lib\site-packages\matplotlib\axes\_axes.py", line 1407, in plot 
    self.add_line(line) 

    File "C:\tools\Python2.7\lib\site-packages\matplotlib\axes\_base.py", line 1787, in add_line 
    self._update_line_limits(line) 

    File "C:\tools\Python2.7\lib\site-packages\matplotlib\axes\_base.py", line 1809, in _update_line_limits 
    path = line.get_path() 

    File "C:\tools\Python2.7\lib\site-packages\matplotlib\lines.py", line 989, in get_path 
    self.recache() 

    File "C:\tools\Python2.7\lib\site-packages\matplotlib\lines.py", line 676, in recache 
    x = np.asarray(xconv, np.float_) 

    File "C:\tools\Python2.7\lib\site-packages\numpy\core\numeric.py", line 482, in asarray 
    return array(a, dtype, copy=False, order=order) 

ValueError: invalid literal for float(): 01/06/2017 22:00 
+0

はあなたが私たちに正確なエラーを与えてくださいだろうか? – dhdavvie

+0

あなたは[mcve]を提供してください。たとえば、エラーを再構築するために使用できる小さなカスタムの 'a' DataFrameを作成するだけです。 – MSeifert

+0

多くの連鎖インデックス作成... yikes!ベストプラクティスを索引付けするためにこれを読んでいます。http://pandas.pydata.org/pandas-docs/stable/indexing.html#why-does-assignment-fail-when-using-chained-indexing –

答えて

0

あなたの問題は、次のようなフォーマットされていないdatetime列に関するものです。私はpd.to_datetime()を使ってカラムを変換し、問題なくこのデータをプロットすることができました。あなたの作図も間違っていて、おそらくエラーを投げるでしょう。fig, axはタプルを解凍するためのものです。 axにはplotメソッドが含まれています(下記参照)。

df 
        time Unnamed: 2 
22 2017-01-06 13:00:00   23 
23 2017-01-06 16:00:00   22 
24 2017-01-06 19:00:00   15 
25 2017-01-06 22:00:00   10 

変換:

df.time = pd.to_datetime(df.time) 

プロット:

fig, ax = plt.subplots() 
ax.plot(df.time, df['Unnamed: 2']) 
plt.tight_layout() 
plt.show() 

enter image description here

+0

ありがとう、アンドリュー! 2つの異なる一連のデータが存在するため、私はサブプロットを使用します。再度、感謝します。 –

関連する問題