改訂版 Pythonユーザのための Jupyter[実践]入門 [ 池内 孝啓、片柳 薫子、@driller ]
こんにちは、monachan_papa です。
今回は pandas.DataFrameの at、iatメソッドの解説をします。
at、iatメソッドは1つのセルだけを操作することができるメソッドです。
ユーザはただ該当するセルの行情報と列情報を指定するだけでOKです。しかし、これらのメソッドは行情報と列情報の指定方法が大きく異なるため注意が必要です。
本解説を読むことにより、両者の違いや使い方が理解でき、スムーズなセル操作ができるようになります。
なお、本テーマと関連した特定の行列範囲を操作する loc、ilocメソッドについて、過去に解説してます。合わせて読まれることをオススメします。
pandas.DataFrameのloc、ilocメソッドによるデータ抽出【Python tips】
atメソッド
atメソッドは行インデックスと列名を指定して、ある1つのセル操作ができるメソッドです。
iatメソッド
atメソッドは位置を表す行番号と位置を表す列番号を指定して、ある1つのセル操作ができるメソッドです。
ただし、行番号も列番号も開始位置は 0始まりになります。つまり、リストや配列のインデックスの指定方法と同じ仕様ということです。
セル操作
以下は 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 してまずは試しに体験学習するのもありでしょう。
コメント