pandas入門--date_range
76273 ワード
pandas date_range
start開始時間
end終了時間
periods時間長
freq時間周波数、デフォルトは「D」、オプションH(our)、W(eek)、B(usiness)、S(emi-)M(onth)、(min)T(es)、S(econd)、A(year)...
pandas常用関数
pandas-時間シーケンス
時系列とは、時間をインデックスとするSeriesまたはDataFrame
DatetimeオブジェクトがインデックスとしてDatetimeIndexオブジェクトに格納される
時系列特殊機能:
「年」または「年月」をスライスとして伝える
入力日範囲をスライスとして使用
関数のサポート:resample()、truncate(),...
Pandasファイル読み込み
データファイルの一般的なフォーマット:csv
pandasファイルの読み込み:から.ファイル名、url、ファイル対シーンにデータをロード
read_csvデフォルトの区切り記号はカンマ","
read_tableデフォルト区切り文字はタブ"t"
read_csv、 read_table関数の主なパラメータ:
sepは区切り記号を指定し、正規表現「s+」のように使用できます.
header=None指定ファイルにカラム名がありません
names列名の指定
index_colカラムインデックスの指定
skiprowsスキップいくつかの行[1,2,3]#はスキップ1,2,3行として表される
na_values欠落値['None','null']#指定Noneおよびnull文字列がNaNとして解釈される文字列を指定
parse_Datesは、bool値またはリスト[]のタイプのカラムが日付に解析されることを指定します.
csvファイルへの書き込み:to_csv関数
しゅパラメータ
sepファイル区切り記号の指定
na_repは欠落した値を文字列に変換することを指定し、デフォルトは空の文字列です.
header=Falseはカラム名の行を出力しません
index=False行インデックスの列は出力されません
columns指定出力列、転送リスト
Pandasは他のファイルタイプをサポートします.
json、xml、html、データベース、pickle、excel...
start開始時間
end終了時間
periods時間長
freq時間周波数、デフォルトは「D」、オプションH(our)、W(eek)、B(usiness)、S(emi-)M(onth)、(min)T(es)、S(econd)、A(year)...
In [23]: import datetime
In [24]: datetime.datetime.strptime('2010-01-01', '%Y-%m-%d') #
Out[24]: datetime.datetime(2010, 1, 1, 0, 0)
In [25]: # ,
In [26]: import dateutil # from dateutil import parser
In [27]: dateutil.parser.parse('2001-01-01')
Out[27]: datetime.datetime(2001, 1, 1, 0, 0)
In [28]: # datatime
In [29]: dateutil.parser.parse('2001/01/01')
Out[29]: datetime.datetime(2001, 1, 1, 0, 0)
In [30]: dateutil.parser.parse('01/01/2001')
Out[30]: datetime.datetime(2001, 1, 1, 0, 0)
In [31]: dateutil.parser.parse('JAN/01/2001')
Out[31]: datetime.datetime(2001, 1, 1, 0, 0)
In [33]: pd.to_datetime(['2001-01-01', '2010/Feb/02'])
Out[33]: DatetimeIndex(['2001-01-01', '2010-02-02'], dtype='datetime64[ns]', freq=None)
In [34]: #
In [35]: pd.date_range('2010-01-01','2010-01-15')
Out[35]:
DatetimeIndex(['2010-01-01', '2010-01-02', '2010-01-03', '2010-01-04',
'2010-01-05', '2010-01-06', '2010-01-07', '2010-01-08',
'2010-01-09', '2010-01-10', '2010-01-11', '2010-01-12',
'2010-01-13', '2010-01-14', '2010-01-15'],
dtype='datetime64[ns]', freq='D')
In [36]: pd.date_range('2010-01-01',periods=20)
Out[36]:
DatetimeIndex(['2010-01-01', '2010-01-02', '2010-01-03', '2010-01-04',
'2010-01-05', '2010-01-06', '2010-01-07', '2010-01-08',
'2010-01-09', '2010-01-10', '2010-01-11', '2010-01-12',
'2010-01-13', '2010-01-14', '2010-01-15', '2010-01-16',
'2010-01-17', '2010-01-18', '2010-01-19', '2010-01-20'],
dtype='datetime64[ns]', freq='D')
In [37]: # periods
In [38]: pd.date_range('2010-01-01',periods=20, freq='W')
Out[38]:
DatetimeIndex(['2010-01-03', '2010-01-10', '2010-01-17', '2010-01-24',
'2010-01-31', '2010-02-07', '2010-02-14', '2010-02-21',
'2010-02-28', '2010-03-07', '2010-03-14', '2010-03-21',
'2010-03-28', '2010-04-04', '2010-04-11', '2010-04-18',
'2010-04-25', '2010-05-02', '2010-05-09', '2010-05-16'],
dtype='datetime64[ns]', freq='W-SUN')
In [39]: #
In [40]: pd.date_range('2010-01-01',periods=20, freq='W-MON')
Out[40]:
DatetimeIndex(['2010-01-04', '2010-01-11', '2010-01-18', '2010-01-25',
'2010-02-01', '2010-02-08', '2010-02-15', '2010-02-22',
'2010-03-01', '2010-03-08', '2010-03-15', '2010-03-22',
'2010-03-29', '2010-04-05', '2010-04-12', '2010-04-19',
'2010-04-26', '2010-05-03', '2010-05-10', '2010-05-17'],
dtype='datetime64[ns]', freq='W-MON')
In [41]: #
In [42]: pd.date_range('2010-01-01',periods=20, freq='B')
Out[42]:
DatetimeIndex(['2010-01-01', '2010-01-04', '2010-01-05', '2010-01-06',
'2010-01-07', '2010-01-08', '2010-01-11', '2010-01-12',
'2010-01-13', '2010-01-14', '2010-01-15', '2010-01-18',
'2010-01-19', '2010-01-20', '2010-01-21', '2010-01-22',
'2010-01-25', '2010-01-26', '2010-01-27', '2010-01-28'],
dtype='datetime64[ns]', freq='B')
In [43]: # /
In [45]: dt = _
In [46]: dt[0]
Out[46]: Timestamp('2010-01-01 00:00:00', offset='B')
In [47]: dt[0].to_pydatetime()
Out[47]: datetime.datetime(2010, 1, 1, 0, 0)
In [48]: # python datatime
In [49]: pd.date_range('2010-01-01',periods=20, freq='1h20min')
Out[49]:
DatetimeIndex(['2010-01-01 00:00:00', '2010-01-01 01:20:00',
'2010-01-01 02:40:00', '2010-01-01 04:00:00',
'2010-01-01 05:20:00', '2010-01-01 06:40:00',
'2010-01-01 08:00:00', '2010-01-01 09:20:00',
'2010-01-01 10:40:00', '2010-01-01 12:00:00',
'2010-01-01 13:20:00', '2010-01-01 14:40:00',
'2010-01-01 16:00:00', '2010-01-01 17:20:00',
'2010-01-01 18:40:00', '2010-01-01 20:00:00',
'2010-01-01 21:20:00', '2010-01-01 22:40:00',
'2010-01-02 00:00:00', '2010-01-02 01:20:00'],
dtype='datetime64[ns]', freq='80T')
In [50]: #
pandas常用関数
In [2]: import pandas as pd
In [3]: df = pd.DataFrame({'one':[1,2,3,4], 'two':[4,5,6,7]}, index=['a','b','c'
...: ,'d'])
In [4]: df
Out[4]:
one two
a 1 4
b 2 5
c 3 6
d 4 7
In [5]: df.mean()
Out[5]:
one 2.5
two 5.5
dtype: float64
In [6]: df.mean(axis=1)
Out[6]:
a 2.5
b 3.5
c 4.5
d 5.5
dtype: float64
In [7]: #
In [8]: df.sum()
Out[8]:
one 10
two 22
dtype: int64
In [9]: df.sum(axis=1)
Out[9]:
a 5
b 7
c 9
d 11
dtype: int64
In [10]: #
In [11]: df.sort_values(by='one')
Out[11]:
one two
a 1 4
b 2 5
c 3 6
d 4 7
In [12]: df.sort_values(by='one', ascending=False)
Out[12]:
one two
d 4 7
c 3 6
b 2 5
a 1 4
In [13]: # ascending one
In [16]: # NaN ascending NaN
In [17]: df.sort_index()
Out[17]:
one two
a 1 4
b 2 5
c 3 6
d 4 7
In [18]: #
In [19]: df.sort_index(ascending=False)
Out[19]:
one two
d 4 7
c 3 6
b 2 5
a 1 4
In [20]: #
In [21]: df.sort_index(ascending=False, axis=1)
Out[21]:
two one
a 4 1
b 5 2
c 6 3
d 7 4
In [22]: #
In [23]:
pandas-時間シーケンス
時系列とは、時間をインデックスとするSeriesまたはDataFrame
DatetimeオブジェクトがインデックスとしてDatetimeIndexオブジェクトに格納される
時系列特殊機能:
「年」または「年月」をスライスとして伝える
入力日範囲をスライスとして使用
関数のサポート:resample()、truncate(),...
In [2]: import pandas as pd
In [2]: import pandas as pd
In [3]: pd.date_range("2010-01-01", '2010-01-20')
Out[3]:
DatetimeIndex(['2010-01-01', '2010-01-02', '2010-01-03', '2010-01-04',
'2010-01-05', '2010-01-06', '2010-01-07', '2010-01-08',
'2010-01-09', '2010-01-10', '2010-01-11', '2010-01-12',
'2010-01-13', '2010-01-14', '2010-01-15', '2010-01-16',
'2010-01-17', '2010-01-18', '2010-01-19', '2010-01-20'],
dtype='datetime64[ns]', freq='D')
In [4]: import numpy as np
In [5]: sr = pd.Series(np.arange(20),index=pd.date_range('2017-01-01',periods=20
...: ))
In [6]: sr
Out[6]:
2017-01-01 0
2017-01-02 1
2017-01-03 2
2017-01-04 3
2017-01-05 4
2017-01-06 5
2017-01-07 6
2017-01-08 7
2017-01-09 8
2017-01-10 9
2017-01-11 10
2017-01-12 11
2017-01-13 12
2017-01-14 13
2017-01-15 14
2017-01-16 15
2017-01-17 16
2017-01-18 17
2017-01-19 18
2017-01-20 19
Freq: D, dtype: int64
In [7]: sr.index
Out[7]:
DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04',
'2017-01-05', '2017-01-06', '2017-01-07', '2017-01-08',
'2017-01-09', '2017-01-10', '2017-01-11', '2017-01-12',
'2017-01-13', '2017-01-14', '2017-01-15', '2017-01-16',
'2017-01-17', '2017-01-18', '2017-01-19', '2017-01-20'],
dtype='datetime64[ns]', freq='D')
In [8]: # sr index DatetimeIndex
In [9]: # sr
In [10]: sr['2017-01'] # 2017 1
Out[10]:
2017-01-01 0
2017-01-02 1
2017-01-03 2
2017-01-04 3
2017-01-05 4
2017-01-06 5
2017-01-07 6
2017-01-08 7
2017-01-09 8
2017-01-10 9
2017-01-11 10
2017-01-12 11
2017-01-13 12
2017-01-14 13
2017-01-15 14
2017-01-16 15
2017-01-17 16
2017-01-18 17
2017-01-19 18
2017-01-20 19
Freq: D, dtype: int64
In [11]: sr['2017-01-01':'2017-01-09']
Out[11]:
2017-01-01 0
2017-01-02 1
2017-01-03 2
2017-01-04 3
2017-01-05 4
2017-01-06 5
2017-01-07 6
2017-01-08 7
2017-01-09 8
Freq: D, dtype: int64
In [12]: sr.resample('W').sum()
Out[12]:
2017-01-01 0
2017-01-08 28
2017-01-15 77
2017-01-22 85
Freq: W-SUN, dtype: int64
In [13]: #
In [14]: sr.resample('M').sum()
Out[14]:
2017-01-31 190
Freq: M, dtype: int64
In [15]: #
In [16]: sr.resample('M').mean()
Out[16]:
2017-01-31 9.5
Freq: M, dtype: float64
In [17]: sr.truncate(before='2017-01-03') # after
Out[17]:
2017-01-03 2
2017-01-04 3
2017-01-05 4
2017-01-06 5
2017-01-07 6
2017-01-08 7
2017-01-09 8
2017-01-10 9
2017-01-11 10
2017-01-12 11
2017-01-13 12
2017-01-14 13
2017-01-15 14
2017-01-16 15
2017-01-17 16
2017-01-18 17
2017-01-19 18
2017-01-20 19
Freq: D, dtype: int64
In [18]:
Pandasファイル読み込み
データファイルの一般的なフォーマット:csv
pandasファイルの読み込み:から.ファイル名、url、ファイル対シーンにデータをロード
read_csvデフォルトの区切り記号はカンマ","
read_tableデフォルト区切り文字はタブ"t"
read_csv、 read_table関数の主なパラメータ:
sepは区切り記号を指定し、正規表現「s+」のように使用できます.
header=None指定ファイルにカラム名がありません
names列名の指定
index_colカラムインデックスの指定
skiprowsスキップいくつかの行[1,2,3]#はスキップ1,2,3行として表される
na_values欠落値['None','null']#指定Noneおよびnull文字列がNaNとして解釈される文字列を指定
parse_Datesは、bool値またはリスト[]のタイプのカラムが日付に解析されることを指定します.
In [19]: # pd.read_csv(" .csv", index_col='') # index_col
...:
In [20]: # pd.read_csv(" .csv", index_col=0) # index_col
...:
In [21]: # pd.read_csv(" .csv", index_col=0, parse_dates=True) # parse_date
...: s
In [22]: #
In [23]: # pd.read_csv(" .csv", index_col=0, parse_dates=[' ',‘ ’]) # pa
...: rse_dates
In [24]:
In [24]: # csv , ,
...:
In [25]: # pd.read_csv(' .csv', header=None) # header=None pd
...: 0123...
In [26]: # pd.read_csv(' .csv', header=None, names=[' 1', ‘ 2’]) #
...: header=None pd names
In [27]: # read_table read_csv ,table
In [28]:
csvファイルへの書き込み:to_csv関数
しゅパラメータ
sepファイル区切り記号の指定
na_repは欠落した値を文字列に変換することを指定し、デフォルトは空の文字列です.
header=Falseはカラム名の行を出力しません
index=False行インデックスの列は出力されません
columns指定出力列、転送リスト
Pandasは他のファイルタイプをサポートします.
json、xml、html、データベース、pickle、excel...