English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Pandasの結合操作の例
Pandasは、Series、DataFrame、Panelオブジェクトを簡単に組み合わせるためのさまざまな機能を提供します。
pd.concat(objs,axis=0,join='outer',join_axes=None, ignore_index=False)
objs − これはSeriesのシーケンスまたはマップ、DataFrameまたはPanelオブジェクトです。 axis − {0、1、...}、デフォルトは0です。結合する軸です。 join − {'inner','outer'}、デフォルトは'outer'です。他の軸のインデックスをどのように処理するかです。外部は結合、内部は交差点です。 ignore_index − ブール値、デフォルトはFalseです。Trueの場合、結合軸上でインデックス値を使用しないでください。結果軸は0、...、nでマークされます...-1。 join_axes − これはインデックスオブジェクトのリストです。他の(n-1)は、内部ではなく特定の軸のインデックスを使用します。/外部設定ロジック。
このCONCAT関数は、沿轴线に対するすべての結合操作を担当します。異なるオブジェクトを作成して結合してみましょう。
import pandas as pd one = pd.DataFrame({ ','Name':['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], ','subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':['98,90,87,69,78])}, index=[1,2,3,4,5]) two = pd.DataFrame({ ','Name':['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], ','subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':['89,80,79,97,88])}, index=[1,2,3,4,5]) print(pd.concat([one,two])))
実行結果は以下の通りです:
Marks_scored Name subject_id 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5
特定のキーをスライスされたDataFrameの各スライスに関連付けることを想像してみましょう。これを達成するためにkeysパラメータを使用できます-
import pandas as pd one = pd.DataFrame({ ','Name':['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], ','subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':['98,90,87,69,78])}, index=[1,2,3,4,5]) two = pd.DataFrame({ ','Name':['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], ','subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':['89,80,79,97,88])}, index=[1,2,3,4,5]) print(pd.concat([one,two],keys=['x','y']))
実行結果は以下の通りです:
x 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 y 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5
結果のインデックスは重複しています;各インデックスが重複しています。
結果オブジェクトが自分自身のインデックスに従う必要がある場合、ignore_indexをTrueに設定します。
import pandas as pd one = pd.DataFrame({ ','Name':['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], ','subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':['98,90,87,69,78])}, index=[1,2,3,4,5]) two = pd.DataFrame({ ','Name':['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], ','subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':['89,80,79,97,88])}, index=[1,2,3,4,5]) print(pd.concat([one,two],keys=['x','y'],ignore_index=True))
実行結果は以下の通りです:
Marks_scored Name subject_id 0 98 Alex sub1 1 90 Amy sub2 2 87 Allen sub4 3 69 Alice sub6 4 78 Ayoung sub5 5 89 Billy sub2 6 80 Brian sub4 7 79 Bran sub3 8 97 Bryce sub6 9 88 Betty sub5
注意、インデックスが完全に変更され、キーも上書きされます。
axis=に沿って結合する必要がある場合、 12つのオブジェクトを追加すると、新しい列が追加されます。
import pandas as pd one = pd.DataFrame({ ','Name':['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], ','subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':['98,90,87,69,78])}, index=[1,2,3,4,5]) two = pd.DataFrame({ ','Name':['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], ','subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':['89,80,79,97,88])}, index=[1,2,3,4,5]) print(pd.concat([one,two],axis=)1))
実行結果は以下の通りです:
Marks_scored Name subject_id Marks_scored Name subject_id 1 98 Alex sub1 89 Billy sub2 2 90 Amy sub2 80 Brian sub4 3 87 Allen sub4 79 Bran sub3 4 69 Alice sub6 97 Bryce sub6 5 78 Ayoung sub5 88 Betty sub5
Concatの便利なショートカットはSeriesとDataFrameのappendインスタンスメソッドです。これらのメソッドは実際にはconcatよりも前に存在しました。これらは軸=0に沿って結合します、つまりインデックス-
import pandas as pd one = pd.DataFrame({ ','Name':['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], ','subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':['98,90,87,69,78])}, index=[1,2,3,4,5]) two = pd.DataFrame({ ','Name':['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], ','subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':['89,80,79,97,88])}, index=[1,2,3,4,5]) print(one.append(two))
実行結果は以下の通りです:
Marks_scored Name subject_id 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5
この追加機能は、複数のオブジェクトを取り込むことができますおよび-
import pandas as pd one = pd.DataFrame({ ','Name':['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], ','subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':['98,90,87,69,78])}, index=[1,2,3,4,5]) two = pd.DataFrame({ ','Name':['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], ','subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':['89,80,79,97,88])}, index=[1,2,3,4,5]) print(one.append([two,one,two]))
実行結果は以下の通りです:
Marks_scored Name subject_id 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5
Pandasは、特に金融分野での時系列データの処理に強力なツールを提供しています。時系列データを処理する際には、以下のような状況に直面することがよくあります:
時間順序を生成します 時系列を異なる周波数に変換します
これらのタスクを実行するための非常にコンパクトで独立したツールセットを提供します。
datetime.now()現在の日付と時間を提供します。
import pandas as pd print(pd.datetime.now())
実行結果は以下の通りです:
2017-05-11 06:10:13.393147
タイムスタンプデータは、値と時間点を関連付ける時系列データの最も基本的な形式です。パンダオブジェクトの場合、これは時間点を使用することを意味します。一例を示します-
import pandas as pd print(pd.Timestamp('2017-03-01))
実行結果は以下の通りです:
2017-03-01 00:00:00
もしくは整数や浮動小数点時間を変換することもできます。これらのデフォルトの単位はナノ秒(これはタイムスタンプの保存方法です)ですが、通常はエポックを指定可能な別の単位で保存します。一例を示します
import pandas as pd print(pd.Timestamp(1587687255,unit='s'))
実行結果は以下の通りです:
2020-04-24 00:14:15
import pandas as pd print(pd.date_range("11:00", "13:30", freq="30min").time)
実行結果は以下の通りです:
[datetime.time(11, 0) datetime.time(11, 3, 0) datetime.time(12, 0) datetime.time(12, 3, 0) datetime.time(13, 0) datetime.time(13, 3, 0)]
import pandas as pd print(pd.date_range("11:00", "13:30", freq="H").time)
実行結果は以下の通りです:
[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)
日付のオブジェクトのシリーズやリストのオブジェクト(例えば、文字列、タイムスライス、ハイブリッド)を変換するには、to_datetime関数を使用できます。渡した場合、Series(同じインデックスを持つ)が返され、リストのリストはDatetimeIndexに変換されます。以下の例を参照してください。-
import pandas as pd print(pd.to_datetime(pd.Series(['Jul 31, 2009','2010-01-10', None])))
実行結果は以下の通りです:
0 2009-07-31 1 2010-01-10 2 NaT dtype: datetime64[ns]
NaTは時間でないことを示します(NaNに相当します)
もう一つの例を示しましょう。
import pandas as pd print(pd.to_datetime(['2005/11/23', '2010.12.31', None]))
実行結果は以下の通りです:
DatetimeIndex(['2005-11-23', '2010-12-3164[ns]