Python Pandas:TimeDeltaIndexからSeriesを作成し、結果のSeriesにインデックスを設定する方法
Pandasでは、to_series()メソッドを使うことで、TimeDeltaIndexからSeries(シリーズ)を作成できます。生成されるSeriesのインデックスは、indexパラメータで自由に設定することが可能です。
まず、必要なライブラリをインポートします。
import pandas as pd
次に、TimeDeltaIndexオブジェクトを作成します。timedelta形式のデータは「data」パラメータで指定しています。
tdIndex = pd.TimedeltaIndex(data =['10 day 5h 2 min 3us 10ns', '+22:39:19.999999', '2 day 4h 03:08:02.000045', '+21:15:45.999999'])
作成したTimedeltaIndexを表示してみましょう。
print("TimedeltaIndex...\n", tdIndex)
続いて、TimeDeltaIndexをSeriesに変換し、結果のSeriesに新しいインデックスを設定します。ここでは「index」パラメータに文字列のリストを渡して、インデックスを指定しています。
print("\nTimeDeltaIndex to series with new index...\n",
tdIndex.to_series(index=['Date1','Date2','Date3','Date4']))to_series()メソッドのポイント
- index:結果のSeriesに設定するインデックスを指定します。省略した場合は、元のTimeDeltaIndexのインデックスがそのまま引き継がれます。
- name:結果のSeriesの名前を指定することもできます。
- 変換後のSeriesのデータ型(dtype)は、元のTimeDeltaIndexと同じ
timedelta64[ns]になります。
例
以下がサンプルコード全体です。
import pandas as pd
# TimeDeltaIndexオブジェクトを作成
# timedelta形式のデータは「data」パラメータで設定
tdIndex = pd.TimedeltaIndex(data =['10 day 5h 2 min 3us 10ns', '+22:39:19.999999',
'2 day 4h 03:08:02.000045', '+21:15:45.999999'])
# TimedeltaIndexを表示
print("TimedeltaIndex...\n", tdIndex)
# TimeDeltaの各構成要素(日・時・分・秒など)からなるDataFrameを返す
print("\nThe Dataframe of the components of TimeDeltas...\n", tdIndex.components)
# TimeDeltaIndexをdatetime.timedeltaオブジェクトのndarrayとして返す
print("\nReturn TimeDeltaIndex as object ndarray of datetime.datetime objects...\n",
tdIndex.to_pytimedelta())
# TimeDeltaIndexをSeriesに変換し、結果のSeriesにインデックスを設定
# 「index」パラメータでインデックスを指定
print("\nTimeDeltaIndex to series with new index...\n",
tdIndex.to_series(index=['Date1','Date2','Date3','Date4']))出力
このコードを実行すると、次のような出力が得られます。
TimedeltaIndex... TimedeltaIndex(['10 days 05:02:00.000003010', '0 days 22:39:19.999999', '2 days 07:08:02.000045', '0 days 21:15:45.999999'], dtype='timedelta64[ns]', freq=None) The Dataframe of the components of TimeDeltas... days hours minutes seconds milliseconds microseconds nanoseconds 0 10 5 2 0 0 3 10 1 0 22 39 19 999 999 0 2 2 7 8 2 0 45 0 3 0 21 15 45 999 999 0 Return TimeDeltaIndex as object ndarray of datetime.datetime objects... [datetime.timedelta(days=10, seconds=18120, microseconds=3) datetime.timedelta(seconds=81559, microseconds=999999) datetime.timedelta(days=2, seconds=25682, microseconds=45) datetime.timedelta(seconds=76545, microseconds=999999)] TimeDeltaIndex to series with new index... Date1 10 days 05:02:00.000003010 Date2 0 days 22:39:19.999999 Date3 2 days 07:08:02.000045 Date4 0 days 21:15:45.999999 dtype: timedelta64[ns]
-
Python Pandas:Indexオブジェクトから相対度数を取得する方法
PandasのIndexオブジェクトから相対度数(出現割合)を求めるには、index.value_counts()メソッドを使用し、パラメータnormalizeをTrueに設定します。normalize=Trueを指定すると、各値の出現回数が全体の合計で正規化され、0〜1の範囲の相対度数として返されます。 必要なライブラリのインポート まず、必要なライブラリをインポートします。 import pandas as pd Pandasインデックスの作成 次に、PandasのIndexオブジェクトを作成します。 index = pd.Index([50, 10, 70, 110, 90, 50, 1
-
Python Pandas – merge()で2つのDataFrameからデカルト積(直積)を作成する方法
PandasでDataFrame同士をマージするにはmerge()関数を使用します。両方のDataFrameに対してデカルト積(直積)を実行したい場合は、merge()関数の「how」パラメータに以下のように指定します。how = crossデカルト積とはデカルト積(直積)とは、一方のDataFrameの各行と、もう一方のDataFrameのすべての行を組み合わせた結果を指します。例えば、4行のDataFrameと3行のDataFrameをクロス結合すると、4 × 3 = 12行の結果が得られます。Pandasライブラリのインポートまず、エイリアス(別名)を付けてPandasライブラリをインポ