質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

624閲覧

pandasの属性がどのようなものかわかりません。

alpha95

総合スコア10

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

1クリップ

投稿2021/05/16 02:54

現在機械学習について勉強をしています。
padnasでデータフレーム型の行列を入れ替えたい時にTを使って下記のように記述をしました。

import pandas as pd df = pd.read_csv("./hoge.csv") df.T

突然.Tと出てきてよくわからずに調べたところpandasにはmethodとattributeがあり、TはDateframeの属性(Attribute)であるとの記述を見かけたのですが、そもそも「Dateframeの属性」という表現が自分の中で理解できていません。
attributeはpandasにおいてどのような役割を担っているのでしょうか?
methodは操作を定義したものだと認識しています。

わかる方いましたら教えていただきたいです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Pythonのオブジェクトは属性を持ちます。
属性にアクセスするためには、"."つまりドットを使います。

属性のうちで呼び出し可能なもののうちの一部はmethodと呼ばれます。

methodは操作を定義したものだと認識しています、という言い方に合わせるならば、method以外の属性はデータを表しているということになります。

少し複雑になるのですが、メソッドではないけれども関数を呼び出すためのpropertyという機能があります。これは、データに見えるものにアクセスしたとき、別の処理が呼び出されるというものです。
propertyの使い方は

class property

をご覧ください。

ここまではpandas特有ではなく、Pythonの機能の一般論です。

Dateframe.Tはpropertyです。

Dataframeというクラスの定義の中で、関係のあるところだけを以下に引用します。

python

1class DataFrame(NDFrame): 2 def transpose(self, *args, copy: bool = False) -> "DataFrame": 3 nv.validate_transpose(args, dict()) 4 # construct the args 5 6 dtypes = list(self.dtypes) 7 if self._is_homogeneous_type and dtypes and is_extension_array_dtype(dtypes[0]): 8 # We have EAs with the same dtype. We can preserve that dtype in transpose. 9 dtype = dtypes[0] 10 arr_type = dtype.construct_array_type() 11 values = self.values 12 13 new_values = [arr_type._from_sequence(row, dtype=dtype) for row in values] 14 result = self._constructor( 15 dict(zip(self.index, new_values)), index=self.columns 16 ) 17 18 else: 19 new_values = self.values.T 20 if copy: 21 new_values = new_values.copy() 22 result = self._constructor( 23 new_values, index=self.columns, columns=self.index 24 ) 25 26 return result.__finalize__(self) 27 28 T = property(transpose)

このように定義されているので、.Tを実行すると引数無しのtransposeが呼び出されます。

投稿2021/05/16 07:35

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

alpha95

2021/05/18 11:04

propertyというものがあるのですね。 ご回答ありがとうございました。
guest

0

機械学習したことないですが、以下の記事が参考になると思いますので貼っておきます。
https://qiita.com/u1and0/items/375ed5b6ed45476574ac

投稿2021/05/16 04:46

stakak61

総合スコア71

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

alpha95

2021/05/16 06:26

ありがとうございます。 確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問