質問: Pandasのデータ抽出について質問させてください。 二つ質問があります。 ★質問1 ・「loc, iloc, at, iat」を使うデータ抽出 ・上記を使わないデータ抽出 の二つの違いについてです。 どのように使い分けるのでしょうか。 どちらかの方がアクセスが早いなど、優位性が存在するのでしょうか。 ★質問2 | | A | B | C | D | | --- | --- | --- | --- | --- | | 2013-01-06 | -1.337296 | -1.657848 | -3.684703 | -0.268391 | | 2013-01-02 | -0.535063 | -1.147814 | -0.379108 | 0.133091 | | 2013-01-05 | -1.084073 | 0.643263 | -1.009610 | -0.844302 | | 2013-01-03 | -0.686267 | 0.963859 | 0.765866 | 0.140307 | | 2013-01-01 | 0.484697 | 1.550270 | 1.230003 | 0.550349 | | 2013-01-04 | -0.450764 | 1.567588 | 1.793397 | 0.449221 | | とします。 | | | | | このとき ``` df['A'] ``` としたら ``` 2013-01-01 0.484697 2013-01-02 -0.535063 2013-01-03 -0.686267 2013-01-04 -0.450764 2013-01-05 -1.084073 2013-01-06 -1.337296 Freq: D, Name: A, dtype: float64 ``` のようになりますが、「loc, iloc, at, iat」を使って上記と全く同じ形で 抽出するにはどうすればいいでしょうか。 以上、2点お願い致します。
回答: pandasで任意の位置の値を取得・変更するat, iat, loc, ilocにうまくまとまっているので一読ください。 > > ・上記を使わないデータ抽出 > > > どのようなメソッドを想定しているか不明ですが、pandas.DataFrame.queryでしょうか。 実測したことないので推測ですが、at/loc系よりは処理時間はかかるのではないかと思われます。 そのかわり人間にとって分かりやすいクエリー問い合わせ文字列が使えるのがメリットかと。 参考:pandas.DataFrameの行を条件で抽出するquery