2017-08-09 8 views
0

私はインデックスとして日付を格納することと関連する取引戦略バックテストの作成に取り組んでいます。誰かが日付のための次のタイプのデータの違い(そして割り当てを行う際の変更可能性)を説明できますか?パンダとPythonの日付タイプの種類が異なります

a=pd.date_range('1/1/2016',periods=10,freq='w') 
b=datetime.datetime(2016,1,4) 
c=pd.datetime(2016,1,4) 
d=pd.Timestamp(153543453435) 

私はそれを印刷する場合、データ型は以下の通りです:

<class 'pandas.core.indexes.datetimes.DatetimeIndex'> (print(type(a)) 
<class 'pandas._libs.tslib.Timestamp'> (print(type(a[0])) 
<class 'datetime.datetime'> 
<class 'datetime.datetime'> 
<class 'pandas._libs.tslib.Timestamp'> 

変数の割り当てを行うときに、誰かが詳細にそれらの違いや可変性を説明することができればそれは素晴らしいことですか?

答えて

3
dti = pd.date_range('1/1/2016',periods=10,freq='w') 

the docsDatetimeIndexに従う:

不変 Int64型として内部的に表現さdatetime64データのndarray、および日時のサブクラスであるタイムスタンプオブジェクトにボックス化し、このようなメタデータを運ぶことができます周波数情報を含む。

ts = dti[0] 

さらにパンダTimestampオブジェクトは不変になるように設計されています。元Timestampオブジェクトの年は変更されませんでしたどのように

ts # returns Timestamp('2016-01-03 00:00:00', freq='W-SUN') 
ts.replace(year=2015) # returns Timestamp('2015-01-03 00:00:00', freq='W-SUN') 
ts # returns Timestamp('2016-01-03 00:00:00', freq='W-SUN') 

注意を。代わりにreplaceメソッドが新しいTimestampオブジェクトを返しました。 the python docsに従ってネイティブのPython datetimeオブジェクトに対して

最後には、これらのタイプの

オブジェクトは不変です。

ここでは、は、日付時刻を表すさまざまなタイプ間の変換についてです。

なぜ、別のものを使用するのですか?

datetimesは痛みを伴う可能性があります。そのため、パンダは独自のラッパークラス(Timestamp)を作成しました。メタデータはこれらのオブジェクトに格納され、操作が簡単になります。 DatetimeIndexは、追加された機能のためにTimestampオブジェクトに囲まれたnumpy datetime64オブジェクトのシーケンスに過ぎません。 Timestamp/DatetimeIndexすることができますを使用して例えば:

  • はdatetimeindexに営業一定の日数を追加します。
  • 特定の週数にわたるシーケンスを作成します。
  • タイムゾーンを変更します。
  • など

これらの事のすべてがTimestampDatetimeIndexクラスに保存されている追加メソッドおよびメタデータなしで王室の痛みになります。

さらに詳しい例はpandas docsをご覧ください。

関連する問題