pandas.DataFrameのat、iatメソッドによるセル操作【Python tips】

Python

改訂版 Pythonユーザのための Jupyter[実践]入門 [ 池内 孝啓、片柳 薫子、@driller ]

 

こんにちは、monachan_papa です。

今回は pandas.DataFrameの at、iatメソッドの解説をします。
at、iatメソッドは1つのセルだけを操作することができるメソッドです。
ユーザはただ該当するセルの行情報と列情報を指定するだけでOKです。しかし、これらのメソッドは行情報と列情報の指定方法が大きく異なるため注意が必要です。

本解説を読むことにより、両者の違いや使い方が理解でき、スムーズなセル操作ができるようになります。

なお、本テーマと関連した特定の行列範囲を操作する loc、ilocメソッドについて、過去に解説してます。合わせて読まれることをオススメします。

pandas.DataFrameのloc、ilocメソッドによるデータ抽出【Python tips】

atメソッド

atメソッドは行インデックスと列名を指定して、ある1つのセル操作ができるメソッドです。

df.at[行インデックス, 列名]

iatメソッド

atメソッドは位置を表す行番号と位置を表す列番号を指定して、ある1つのセル操作ができるメソッドです。
ただし、行番号も列番号も開始位置は 0始まりになります。つまり、リストや配列のインデックスの指定方法と同じ仕様ということです。

df.iat[位置を表す行番号, 位置を表す列番号]

セル操作

以下は at、iatメソッド解説用のテストデータです。
このデータを使って、セル操作における両者の違いや記述例を見ていきましょう。

# セル操作
import numpy as np
import pandas as pd

np.random.seed(0)
df = pd.DataFrame(np.random.rand(4, 4), index=['たけし', 'さんま', 'タモリ', '志村'], columns=['A', 'B', 'C', 'D'])
df
A B C D
たけし 0.548814 0.715189 0.602763 0.544883
さんま 0.423655 0.645894 0.437587 0.891773
タモリ 0.963663 0.383442 0.791725 0.528895
志村 0.568045 0.925597 0.071036 0.087129

セルの抽出

以下のコードは、セルの値が 0.925597 であるセルを抽出する例です。
atメソッドならば、行インデックス 志村、列名 B を指定します。
iatメソッドならば、行番号 3、列番号 1 を指定します。

# テストデータ表示
display(df)

# atメソッド
print(df.at['志村', 'B'])

# iatメソッド
print(df.iat[3, 1])
A B C D
たけし 0.548814 0.715189 0.602763 0.544883
さんま 0.423655 0.645894 0.437587 0.891773
タモリ 0.963663 0.383442 0.791725 0.528895
志村 0.568045 0.925597 0.071036 0.087129
0.925596638292661
0.925596638292661

セルの更新

セルの更新をするには、[ ]の参照に値を代入することで可能になります。

以下のコードは、atメソッドではセルの値が 0.925597 であるセルを更新する例です。
行インデックス 志村、列名 B で参照し、値を 100 に更新しています。

一方、iatメソッドではセルの値が 0.602763 であるセルを更新する例です。
行番号 0、列番号 2 で参照し、値を 777 に更新しています。

# テストデータ表示
display(df)

# atメソッド
df.at['志村', 'B'] = 100

# iatメソッド
df.iat[0, 2] = 777

# 結果確認
df
A B C D
たけし 0.548814 0.715189 0.602763 0.544883
さんま 0.423655 0.645894 0.437587 0.891773
タモリ 0.963663 0.383442 0.791725 0.528895
志村 0.568045 0.925597 0.071036 0.087129
A B C D
たけし 0.548814 0.715189 777.000000 0.544883
さんま 0.423655 0.645894 0.437587 0.891773
タモリ 0.963663 0.383442 0.791725 0.528895
志村 0.568045 100.000000 0.071036 0.087129

 

以上で、pandas.DataFrame の at、iatメソッドについての解説を終わります。
シンプルな記述でセル操作ができる優れ者なメソッド。今後、存分に扱えるようにポイントをしっかりと押さえておくことがとても大切です。データ抽出・データ分析の効率がかなり違います。

さて、pandas をもっともっと使いこなしたい御方、さらにスキルアップをしてみたい御方は改訂版 Pythonユーザのための Jupyter[実践]入門 [ 池内 孝啓、片柳 薫子、@driller ]がたいへんオススメです。
Jupyter Lab のフル活用方法や、データ分析についてのノウハウも同時に学べて一石二鳥ならぬ、一石三鳥です。
もちろん、初心者にも大変オススメできます。Jupyter Lab自体がインタラクティブな動作確認や視覚効果が本当にすばらしいので、プログラミング学習においての理解度が触るたびに上がっていきます。どんどん触ってPython大好き人間になってもらいたいです。


改訂版 Pythonユーザのための Jupyter[実践]入門 [ 池内 孝啓、片柳 薫子、@driller ]

 

また、爆速で pandas を学びたい御方にはプログラミングスクールを考えるのも、ひとつの手です。独学よりも効果が出やすいですが、いかんせん投資がけっこうかかります。しかし、techgym というスクールは通うか通わないかは別として、無料のサンプルテキスト&解説動画がもらえます。これをとりあえず get してまずは試しに体験学習するのもありでしょう。

コメント

タイトルとURLをコピーしました