2016-12-20 16 views
0

私は時系列データを使用して、何らかの種類の音楽再生を思いついています。Pythonです。だから、私はいくつかの音楽を「オーディオライズ」(データを視覚化するのではなく)で演奏しようとしています。 midiTimeパッケージを使用していますが、入力時にエラーが発生します。 https://pypi.python.org/pypi/miditime時系列データの音楽再生をPythonを使用して

を、私は私のデータをエポックしようとしていた場合、それは私にAttribute errorを与えている:

これは、私が使用していたパッケージです。

my_data = [ 
{'event_date': Jan 13 1961 , 'magnitude': 3.4}, 
{'event_date': Dec 11 1968, 'magnitude': 3.2}, 
{'event_date': May 12 1988, 'magnitude': 3.6}, 
{'event_date': Mar 5 1989, 'magnitude': 3.0}, 
{'event_date': Jan 30 1991, 'magnitude': 5.6}, 
{'event_date': Dec 9 2017, 'magnitude': 4.0} 
] 

私は取得していますエラーは以下の通りです:

File "<ipython-input-13-d905836dc7b0>", line 2 
{'event_date': Jan 13 1961 , 'magnitude': 3.4}, 
        ^
SyntaxError: invalid syntax 

私はちょうどでのフォーマットが何であるかを見つけることができないです: {'event_date': <datetime object>, 'magnitude': 3.4}

だから、誰かが助けることができる場合私はデータ時間オブジェクトの形式が何であるか理解しています、それは莫大な助けになるでしょう!

ありがとうございます!それは本当にインスタンス化された変数やメソッド()ではないdatetime objectではないですし、以来

+1

あなたのコードとエラーメッセージの一部を追加することができますか? – sebasaenz

+0

(コメントではなく)問題のフルエラーメッセージ(トレースバック)を常に追加してください。 – furas

+0

@sebasaenz、このコードは、私が以前に提供したリンクのコードに従っています(このコードは、私が以前に提供したコードに従っています):my_data = [{'event_date':12/11/1989、 'magnitude': 3.4}、 {'event_date':5/3/1989、 'magnitude':3。2}、 {'event_date':1/30/1991 'magnitude':3.6} {'event_date':3/5/1989、 'magnitude':3.0}、 {'event_date':5/12/1988、 'magnitude':5.6}、 {'event_date':12/9/2017、 'magnitude':4.0} ] my_data_epochedコマンドを実行するとエラーが発生します。私はそれがデータ型変換のためだと思う: AttributeError: 'float'オブジェクトには 'tzinfo'属性がありません – DisgruntledPhDStudent

答えて

1

あなたの主な問題は、最初はevent_date検索を試みた懸念されます。 辞書のリストに適切なDateTimeオブジェクトを渡す必要があります。

あなたは単にあなたが(下記のシーケンス以下の行方不明のエントリを追加すること)のようなものを経由して日付時刻の文字列になり変換することができます:

from datetime import datetime 
from miditime.miditime import MIDITime 

mymidi = MIDITime(120, 'myfile.mid', 5, 5, 1) 


mydata = [ 
    { 
     'event_date': datetime.strptime('Jan 13 1961', '%b %d %Y'), 
     'magnitude': 3.4 
    }, 
    { 
     'event_date': datetime.strptime('Dec 11 1968', '%b %d %Y'), 
     'magnitude': 3.4 
    }, 
] 

my_data_epoched = [{ 
    'days_since_epoch': mymidi.days_since_epoch(d['event_date']), 
    'magnitude': d['magnitude']} for d in my_data] 

しかし、あなたはで次のようにしているドキュメントでより多くを整列する:https://pypi.python.org/pypi/miditimeことができますすなわち、これらのエントリのすべてを変換:''を経由して文字列へJan 13 1961などのようなDateTimeオブジェクトに:

from datetime import datetime 
from miditime.miditime import MIDITime 

mymidi = MIDITime(120, 'myfile.mid', 5, 5, 1) 

my_data = [ 
    {'event_date': 'Jan 13 1961' , 'magnitude': 3.4}, 
    {'event_date': 'Dec 11 1968', 'magnitude': 3.2}, 
    {'event_date': 'May 12 1988', 'magnitude': 3.6}, 
    {'event_date': 'Mar 5 1989', 'magnitude': 3.0}, 
    {'event_date': 'Jan 30 1991', 'magnitude': 5.6}, 
    {'event_date': 'Dec 9 2017', 'magnitude': 4.0} 
] 

my_data_epoched = [{ 
    'days_since_epoch': mymidi.days_since_epoch(datetime.strptime(d['event_date'], '%b %d %Y')), 
    'magnitude': d['magnitude']} for d in my_data] 

上記セットあなたの日時フィールドのすべての文字列と追加へは、mymidiメソッドで使用するdatetimeを作成します:days_since_epoch

上記の文書に加えた変更は、 mymidi.days_since_epoch(datetime.strptime(d['event_date'], '%b %d %Y')), 'magnitude': d['magnitude']} for d in my_data]の変更とevent_dateの変更です。これらを簡単にここにあなたの辞書のDateTimeオブジェクトに簡単に設定できますが、これはあなたの例にとっては最も簡単です。

将来的に有効なDateTimeオブジェクトをevent_date値として渡し、magnitudeに浮動小数点数を渡したいとします。

上記の結果:

my_data_epoched = [ 
    {'days_since_epoch': -3275.0, 'magnitude': 3.4}, 
    {'days_since_epoch': -386.0, 'magnitude': 3.2}, 
    {'days_since_epoch': 6706.0, 'magnitude': 3.6}, 
    {'days_since_epoch': 7003.0, 'magnitude': 3.0}, 
    {'days_since_epoch': 7699.0, 'magnitude': 5.6}, 
    {'days_since_epoch': 17509.0, 'magnitude': 4.0} 
] 
+0

何らかの理由で私はまだ次のエラーが表示されていますが、問題が発生していないことを保証するためにdatetimeをインストールしました。エラーは次のとおりです。 AttributeError:typeオブジェクト 'datetime.datetime'に 'date time'という属性はありません。 私は何か非常に基本的なものを見逃していると確信していますが、私はこれに非常に新しいです。 – DisgruntledPhDStudent

+0

@DisgruntledPhDStudent最新の回答の回答をご覧ください。 'datetime.strptime'を参照する場合は' from datetime import datetime'、 'datetime.datetime.strptime'を使用して' import datetime'をインポートするようにしてください。上記のコードブロックの1つをコピーすると、それに応じて動作するはずです。 – mbeacom

+0

ありがとう@mbeacom私はあなたのコードを貼り付けてコピーし、それは動作します、ありがとう。 – DisgruntledPhDStudent

関連する問題