PandasのSeriesを勉強しています。アクセサという概念がよくわからないです。
関数やメソッドに該当するのでしょうか?
Series.apply(str)のstr部分はアクセサに当たるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
Series.apply(str)のstr部分はアクセサに当たるのでしょうか?
いいえ、pandasのアクセサではありません。
日時、文字列などについて、なるべくapplyを使わないで済むようにしたものがpandasのアクセサなのだと思います。
たとえば、
sr_a=sr[sr.apply(str).str.contains('7',na=False,regex=False)]
という式をapplyだけを使って書くと
sr_a=sr[sr.apply(lambda x: '7' in str(x))]
となります。
applyは包丁のように何にでも使える道具です。それに対して、pandasのアクセサは皮むき器とかリンゴの芯抜き器とかパイナップルの芯抜き器のように特定の目的に特化した道具です。どちらを使うかは、使う人の好みによります。(私は記憶力が悪いので、たくさんの道具を覚えきれないので、applyのような道具を使って何でもやってしまう方が合っています)
関数やメソッドに該当するのでしょうか?
まず、何がpandasのアクセサなのかを説明します。
pandas.Seriesのインスタンスをsrとするとき、
- sr.strという式はpandasのアクセサか?
わたしはpandasのアクセサだとは思いません。しかしこれをアクセサだと言う人がいるかもしれません。
2. x = sr.strとしたとき、xはpandasのアクセサか?
エラーが出なければxはpandasのアクセサです。
3. sr.str.containsはpandasのアクセサか?
違います。これはpandasのアクセサのメソッドです。
次に、関数やメソッドについて説明します。
まず、intやfloatやstrは関数ではありません。変換関数だと書いてあるサイトがありますが、私は間違いだと思っています。これは公式マニュアルにも問題があって、組み込み関数の一覧の中にintなどが含まれています。ただしそこからリンクされている詳しい説明の部分を見るとクラスだと書いてあります。
最も狭い意味での関数は、inspect.isfunctionで調べてTrueになるものです。
python
1>>> import inspect 2>>> def afunction(): 3... pass 4>>> print(inspect.isfunction(afunction)) 5True 6>>> print(afunction) 7<function afunction at 0x000002B1F561E700>
上記は誤解の余地のない定義ですが、少し問題もあります。
python
1>>> print(inspect.isfunction(max)) 2False 3>>> print(max) 4<built-in function max>
最大値を求める組み込み関数maxは関数ではないことになります。
この他にも、numpyの三角関数をみてみると、これも関数ではないことになります。
python
1>>> import numpy 2>>> print(inspect.isfunction(numpy.sin)) 3False 4>>> print(numpy.sin) 5<ufunc 'sin'>
このように人によって関数やメソッドの定義は違います。
しかし、()を付けて呼び出すことができないものがpythonの関数やメソッドでないことに異論を唱える人は少ないでしょう。(私は少数派です)
pandasのアクセサは関数やメソッドに該当するのでしょうか?という質問だとすると、「該当」の意味が問題になりますが、引数を付けて呼び出せないという意味では、該当しません。
投稿2021/02/12 02:42
総合スコア24670
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/12 20:47