Pythonのデータ分析を使用する場合は、しばしば、このような定量的取引など、特定の時間に関連して、時間と日付のフォーマット変換処理、分析、データマイニングが発生した過去のデータから、株価の変化を探すことです。Pythonが来る時間モジュールの日時を処理し、numpyのライブラリは、データ分析パンダBANK Python環境として、対応するメソッドを提供するだけでなく、強力なデータ処理日時を提供し、処理ツールは、時系列です。
1、日付のシーケンスを生成します
主pd.data_range()とpd.period_range()は、2つの方法を提供し、パラメータは、開始時刻、終了時刻が与えられ、及び回数は、時間 - 周波数(FREQ =「M」月、「D」日、W「を生成しました'週、' Y「)、その他。
二つの主な違いは、()は配列DatetimeIndex日付形式を生成されるpd.date_rangeあるpd.period_range()で生成されたシーケンスPeriodIndex日付形式。
時系列のシーケンスを生成し、周囲を比較することによって、次のヶ月:
date_rng = pd.date_range( '2019年1月1日'、FREQ = 'M'、期間= 12)
プリント(f'month DATE_RANGE():\ nの{date_rng} ')
DATE_RANGE():
DatetimeIndex([ '2019年1月31日'、 '2019年2月28日'、 '2019年3月31日'、 '2019年4月30日'、
「2019年5月31日」、「2019年6月30日」、「2019年7月31日」、「2019年8月31日」
'2019年9月30日'、 '2019年10月31日'、 '2019年11月30日'、 '2019年12月31日']、
DTYPE = 'datetime64 [NS]'、FREQ = 'M')
period_rng = pd.period_range( '2019年1月1日'、FREQ = 'M'、期間= 12)
プリント(f'month period_range():\ N {period_rng} ')
period_range():
PeriodIndex([ '2019から01'、 '2019から02'、 '2019から03'、 '2019から04'、 '2019から05'、 '2019から06'、
'2019から07'、 '2019から08'、 '2019から09'、 '2019から10'、 '2019から11'、 '2019から12']、
DTYPE = '期間[M]'、FREQは= 'M')
date_rng = pd.date_range( '2019年1月1日'、FREQ = 'W-SUN'、期間= 12)
プリント(f'week DATE_RANGE():\ N {date_rng} ')
週DATE_RANGE():
DatetimeIndex([ '2019年1月6日'、 '2019年1月13日'、 '2019年1月20日'、 '2019年1月27日'、
「2019年2月3日」、「2019年2月10日」、「2019年2月17日」、「2019年2月24日」
'2019年3月3日'、 '2019年3月10日'、 '2019年3月17日'、 '2019年3月24日']、
DTYPE = 'datetime64 [NS]'、FREQ = 'W-SUN')
period_rng = pd.period_range( '2019年1月1日'、FREQ = 'W-SUN'、期間= 12)
プリント(f'week period_range():\ N {period_rng} ')
週period_range():
PeriodIndex([ '2018年12月31日/ 2019年1月6日'、 '2019年1月7日/ 2019年1月13日'
「2019年1月14日/ 2019年1月20日」、「2019年1月21日/ 2019年1月27日」
「2019年1月28日/ 2019年2月3日」、「2019年2月4日/ 2019年2月10日」
「2019年2月11日/ 2019年2月17日」、「2019年2月18日/ 2019年2月24日」
「2019年2月25日/ 2019年3月3日」、「2019年3月4日/ 2019年3月10日」
'2019年3月11日/ 2019年3月17日'、 '2019年3月18日/ 2019年3月24日']、
DTYPE = '期間[W-SUN]'、FREQ = 'W-SUN')
date_rng = pd.date_range( '2019年1月1日0時00分00秒'、FREQ = 'H'、期間= 12)
プリント(f'hour DATE_RANGE():\ nの{date_rng} ')
時間DATE_RANGE():
DatetimeIndex([ '2019年1月1日午前0時00分00秒'、 '2019年1月1日午前1時00分00秒'、
「2019年1月1日2時00分00秒」、「2019年1月1日午前三時00分00秒」、
「2019年1月1日4時00分00秒」、「2019年1月1日午前5時00分00秒」、
「2019年1月1日午前6時00分○○秒」、「2019年1月1日午前7時○○分00秒」
「2019年1月1日8時00分00秒」、「2019年1月1日9時00分00秒」、
「2019年1月1日午前十時00分00秒」、「2019年1月1日午前11時〇〇分00秒」]、
DTYPE = 'datetime64 [NS]'、FREQは= 'H')
period_rng = pd.period_range( '2019年1月1日00:00:00'、FREQ = 'H'、期間= 12)
プリント(f'hour period_range():\ N {period_rng} ')
時間period_range():
PeriodIndex([「2019年1月1日午前0時」、「2019年1月1日午前1時00分」、「2019年1月1日2時」、
「2019年1月1日午前3時」、「2019年1月1日午前4時00」、「2019年1月1日5時00分」
「2019年1月1日午前6時00分」、「2019年1月1日七時」、「2019年1月1日8時00分」
「2019年1月1日9時00分」、「2019年1月1日10:00」、「2019年1月1日11時」]、
DTYPE = '期間[H]'、FREQの= 'H')
2、および変換Timestampオブジェクトを生成します
タイムスタンプTimestampオブジェクトを作成すると、pd.Timestamp()メソッドとpd.to_datetime()メソッドを持っています。次のように:
TS = pd.Timestamp(2019,1,1)
プリント(f'pd.Timestamp() - 1:{} TS ')
#pd.Timestamp() - 1:2019年1月1日0時00分○○秒
TS = pd.Timestamp(DT(2019,1,1、時間= 0分= 1、秒= 1))
プリント(f'pd.Timestamp() - 2:{} TS ')
#pd.Timestamp() - 2:2019年1月1日午前0時01分01秒
TS = pd.Timestamp(2019年1月1日0:1:1)
プリント(f'pd.Timestamp() - 3:{} TS ')
#pd.Timestamp() - 3:2019年1月1日午前0時01分01秒
プリント(f'pd.Timestamp() - タイプ:{タイプ(TS)} ')
#pd.Timestamp() - タイプ:
#Dtを= pd.to_datetime(2019,1,1)がサポートされていません
DT = pd.to_datetime(DT(2019,1,1、時間= 0分= 1、秒= 1))
プリント(f'pd.to_datetime() - 1:{} DT ')
#1 pd.to_datetime() - 1:2019年1月1日夜12時01分01秒
DT = pd.to_datetime(2019年1月1日0:1:1)
プリント(f'pd.to_datetime() - 2:{} DT ')
#1 pd.to_datetime() - 2:2019年1月1日夜12時01分01秒
プリント(f'pd.to_datetime() - タイプ:{タイプ(DT)} ')
#1 pd.to_datetime() - タイプ:
#Pd.to_datetimeは、カスタムの時系列を生成します
dtlist = pd.to_datetime([2019年1月1日0:1:1、2019年3月1日0:1:1])
プリント(f'pd.to_datetime() - リスト:{dtlist} ')
#1 pd.to_datetime() - リスト:DatetimeIndex([ '2019年1月1日0時01分01秒'、 '2019年3月1日0時01分01秒']、DTYPE = 'datetime64 [NS]'、FREQ =無し)
#タイムスタンプは、期間ヶ月の期間に変換しました
PR = ts.to_period( 'M')
プリント(f'ts.to_period():{PR} ')
#1 ts.to_period():2019から01
プリント(f'pd.to_period() - タイプ:{型(PR)} ')
#1 pd.to_period() - タイプ:
3、ターゲット変換期間を生成します
#DEFINE期間
= pd.Period( '2019')あたり
プリント(f'pd.Period():{}あたり)
#1 pd.Period():2019
per_del = pd.Period( '2019') - pd.Period( '2018')
プリント(スペーサ{per_del}のf'2019及び2018「)を直接#+であることができる - (代わって)整数
#2019と2018ギャップイヤー
タイムスタンプに#時間
印刷(per.to_timestamp(方法= '末端'))#2019年12月31日午後12時00分00秒
印刷(per.to_timestamp(方法= 'スタート'))#2019年1月1日0時00分○○秒
4、発生間隔はtimedelta
#世代間隔はtimedelta
印刷(pd.Timedelta(日= 5、分= 50、秒= 20ミリ秒= 10マイクロ秒= 10、ナノ秒= 10))
#5日00:50:20.010010
#現在の時刻を取得します。
今= pd.datetime.now()
#50日後の日付現在の時刻を計算します
DT =今+ pd.Timedelta(日= 50)
プリント(F '現在時刻が50日の時間の後、{今}は{} DT')
#現在の時刻は2019-06-0817です:59:59:50日2019-07-2817時間後31.726065、31.726065
#のみ表示日付
印刷(dt.strftime( '%Y-%m-%d' では))#2019年7月28日
図5に示すように、周波数変換及び再サンプリング
四半期ごとにインデックス値を表示し#asfreq
#「DatetimeIndex」オブジェクトには属性「asfreq」がありません
日付= pd.date_range( '2018年1月1日'、期間= 20、FREQ = 'D')
tsdat_series = pd.Series(範囲(20)、インデックス=日付)
tsp_series = tsdat_series.to_period( 'D')
印刷(tsp_series.index.asfreq( 'Q'))
日付= pd.period_range( '2018年1月1日'、期間= 20、FREQ = 'D')
tsper_series = pd.Series(範囲(20)、インデックス=日付)
印刷(tsper_series.index.asfreq( 'Q'))
PeriodIndex([ '2018Q1'、 '2018Q1'、 '2018Q1'、 '2018Q1'、 '2018Q1'、 '2018Q1'、
'2018Q1'、 '2018Q1'、 '2018Q1'、 '2018Q1'、 '2018Q1'、 '2018Q1'、
'2018Q1'、 '2018Q1'、 '2018Q1'、 '2018Q1'、 '2018Q1'、 '2018Q1'、
'2018Q1'、 '2018Q1']、
DTYPE = '期間[Q-DEC]'、FREQ = 'Q-DEC')
四半期ごとの統計と表示#resample
印刷(tsdat_series.resample( 'Q')。合計()。to_period( 'Q'))
2018Q1 190
FREQ:Q-DEC、DTYPE:int64モード
毎週平均まとめる#groupby
印刷(tsdat_series.groupby(ラムダX:x.weekday).mean())
0 7.0
1 8.0
2 9.0
3 10.0
4 11.0
5 12.0
6 9.5
DTYPE:のfloat64
ます。https://juejin.im/post/5cfe0230f265da1b8d161155で再現