import numpy as np
import pandas as pd
理解
時系列データは、金融、経済学、生態学、神経科学(神经学)や物理学など様々な分野でのデータのからimpotantです。時間内に多くのポイントで観測又は測定されたものは、時系列を形成しています。
多くの時系列は、そのデータポイントは、いくつかのルールは、そのような15秒ごとのように、5分ごと、または1ヶ月に1回に応じて定期的に発生言うことです周波数を、固定されています。
時系列は、時間またはユニット間のオフセットの固定ユニットなし(不规则的)不規則であってもよいです。どのようにマークし、時系列データを参照すると、アプリケーションに依存し、次のいずれかを持っていることがあります。
- タイムスタンプ、特定の瞬間時間内(タイムスタンプ)
- 、月2007年1月または2010年通年のように修正された期間、(时期)
- 開始と終了のタイムスタンプが示す時間間隔。期間は間隔の特別な場合と考えることができます。(时间间隔)
- 実験や経過時間(试验时间逝去)。各タイムスタンプは、(オーブン内palcedされて以来、各第二焼成クッキーの例えば直径(直径))は、特定の開始時刻に対する時間の尺度であります
teachniquesの多くは、インデックスは、実験の開始からの経過時間を示す整数または浮動小数点数とすることができる実験時系列に適用できるが、この章では、Iは主に、最初の三つのカテゴリーに沿って時系列に関係しています。時系列の最も単純で最も広く使用されている種類は、それらのタイムスタンプでインデックス化されています。
パンダはまた、実験や経過時間を表すのに有用な方法であることができるtimedeltas、に基づいてインデックスをサポートします。私たちは、この本ではtimedeltaインデックスを探索していないが、あなたはパンダdocumenttaionでより学ぶことができます。
パンダは、多くのBUITイン時系列ツールとデータalgorithimsを提供します。あなたは非常に大規模な時系列と簡単にスライスし、サイコロ、と効率的に作業することができ、集約、およびリサンプル(重采样) irrgular-と固定周波数の時系列。これらのツールのいくつかは、特に便利な金融・経済のアプリケーションですが、あなたは確かに、あまりにも、サーバーのログを分析するためにそれらを使用することができます。
Pyhton標準ライブラリは、データ日時データのタイプ、ならびにカレンダ関連(日历相关)機能を含みます。日時、時間、カレンダーモジュールが起動する主要な場所です。datetime.datetimeのは単にタイプ、または日時は、広く使用されています。
from datetime import datetime
now = datetime.now()
now
datetime.datetime(2019, 4, 27, 15, 3, 14, 103616)
now.year, now.month, now.day, now.hour, now.minute
(2019, 4, 27, 15, 3)
日時マイクロ秒はtimedeltaまで記憶(存储)日付と時刻の両方が、2つの日時オブジェクト間の時間(临时的)差をreprecents。
"cj 特方便, 在时间相加上"
delta = datetime(2011, 1, 7) - datetime(2008, 6, 24, 8, 15)
delta
'cj 特方便, 在时间相加上'
datetime.timedelta(926, 56700)
delta.days, delta.seconds
(926, 56700)
あなたはその新しいシフトオブジェクトを生成するDateTimeオブジェクトにtimedelataまたは複数を追加(または削除)することができます:
from datetime import timedelta
start = datetime(2011, 1, 7)
"加12天"
start + timedelta(12)
'加12天'
datetime.datetime(2011, 1, 19, 0, 0)
" 减去24天"
start - 2*timedelta(12)
' 减去24天'
datetime.datetime(2010, 12, 14, 0, 0)
表11-1は、データ型をまとめた日時モジュール。この章では、主にパンダとハイレベルの時系列manupulationにおけるデータ型に関係している間、あなたは野生でPyhtonの他の多くの場所で日時ベースの種類が発生することがあります。
タイプ | 説明 |
---|---|
日付 | グレゴリオ暦を使用してストアカレンダーの日付(年、月、日) |
時間 | 時間、分、秒、およびマイクロ秒として、一日の時間を保存します |
日付時刻 | 保存した日付と時刻の両方を |
時間のデルタ | Reprecentsトウ日時値の差を(日として、第..) |
tzinfoの | タイムゾーンのINFOMATIONを格納するための基本タイプ |
文字列と日時の間の変換
あなたはフォーマットできdatetime型のオブジェクトとパンダのタイムスタンプを使用して文字列として、私は後で紹介したオブジェクトを、strのかはstrftimeのフォーマットの仕様を渡して、メソッドを:
stamp = datetime(2011, 1, 3)
stamp
str(stamp)
datetime.datetime(2011, 1, 3, 0, 0)
'2011-01-03 00:00:00'
stamp.strftime('%Y-%m-%d') # 四位数字的年
'2011-01-03'
stamp.strftime('%y-%m-%d') # 2位数字的年
'11-01-03'
書式コードの完全なリストについては、表11-2を参照してください。
タイプ | 説明 |
---|---|
%Y | 4桁の年(4桁の年) |
%と | 2桁の年 |
%mを | 二dight月[01、12] |
%dの | 二dight日[01、31] |
%のH | 時間(24時間)[00、23] |
%私 | 時間(12時間制)[00、12]) |
%M | 二dight分[00、59] |
%S | 次の[00、61](第60、うるう秒61アカウント) |
%のw | 整数として平日[0(Sundday)、6] |
%U | |
%のW | |
の% | + HHMMまたは-HHMMとしてオフセットUTCタイムゾーン。タイムゾーンナイーブ場合は空 |
%F | %Y-%M-%D(例えば2012年4月8日)のためのショートカット |
%D | %のM /%D /%Y(例えば04/18/12)のショートカット |
あなたは、日付の使用して日付に文字列を変換するために、これらの同じ書式コードを使用することができますtime.strptimeを:
value = "2011-01-03"
datetime.strptime(value, '%Y-%m-%d')
datetime.datetime(2011, 1, 3, 0, 0)
datestrs = ['7/6/2011', '8/6/2011']
[datetime.strptime(x, '%m/%d/%Y') for x in datestrs]
[datetime.datetime(2011, 7, 6, 0, 0), datetime.datetime(2011, 8, 6, 0, 0)]
Datetime.strptimeは、既知の形式で日付を解析するための良い方法です。しかし、それは、その都度仕様のフォーマットを書くために、特にこの場合formats.In一般的な日付のために、あなたが使用することができます持っている迷惑なビットすることができparse.parseの、これは自動的にあなたがインストールされている(パッケージdateutilサードパーティの方法をパンダをインストールします)。
from dateutil.parser import parse
parse("2011-01-03")
datetime.datetime(2011, 1, 3, 0, 0)
parse("2011/01/03")
datetime.datetime(2011, 1, 3, 0, 0)
dateutilほとんどの人間intelligble日付表現を解析できるSI:
parse('Jan 31, 1997, 10:45 PM')
datetime.datetime(1997, 1, 31, 22, 45)
国際ロケールでは、月の前appering日は、あなたが渡すことができますので、非常に一般的である=真dayfirstこのことを示すために:
parse('6/12/2011', dayfirst=True)
datetime.datetime(2011, 12, 6, 0, 0)
パンダは、一般に軸インデックスまたはデータフレームの列を使用するかどうか、日付のアレイと協力を向いています。to_datetimeの方法は、日付の表現の多くの異なる種類を解析します。ISO 8601のような標準的な日付形式は非常に迅速に解析することができます。
datestrs = ['2011-07-06 12:00:00', '2011-08-06 00:00:00']
pd.to_datetime(datestrs)
DatetimeIndex(['2011-07-06 12:00:00', '2011-08-06 00:00:00'], dtype='datetime64[ns]', freq=None)
また、行方不明condideredすべきではない値を扱う(なし、空の文字列をなど。):
idx = pd.to_datetime(datestrs + [None])
idx
DatetimeIndex(['2011-07-06 12:00:00', '2011-08-06 00:00:00', 'NaT'], dtype='datetime64[ns]', freq=None)
idx[2]
NaT
pd.isnull(idx)
array([False, False, True])
(NAT;ない時間)がタイムスタンプデータのためのパンダのnull値です。
dateutil.parserは便利なものの不完全なツールです。特に、それはあなたがそれが例えばなかったことを好むかもしれないと、日付などの一部の文字列を認識します。「42」は、今日のccalendar日と年間2042として解析されます。
日時は、他の国や言語でのシステムのためのロケール固有の書式設定オプションの数を持っているにもオブジェクト。たとえば、省略(缩写)の月名は、英語のsystmeと比較して、ドイツ語やフランス語のシステムでは異なるであろう。リストは、表11-3を参照してください。
- %短縮された曜日の名前
- %A完全な曜日名
- %B月の省略名
- 書き込み%のB完全な月
- 完全な日付と時刻のC%(例えば。火曜2012年5月1日午前4時20分57秒PM)
- %Pは、AMまたはPMが含まれています
- %X(例えば'05 / 2012' / 01)
- %のX(たとえば、'04:24:12 PM ')