
Python のpandas.DataFrameでかんたんな表を作って
操作を覚えた&混乱したので、基本操作「取得、変更、追加、削除、平均」の方法をメモしておきます。
(Google Colaboratoryを使用)
まずは元となるリストから表を作成
import pandas as pd
test_data=[[95,65,89],[80,75,84],[62,89,90]]
test_list=pd.DataFrame(s_data,columns=["国語","英語","数学"])
test_list.index = pd.Index(["太郎","二郎","三郎"], name="Name")
test_list
列と行の追加と削除
列(タテの項目)
追加: list["列名"]=[数値] →デフォルトで保存される
削除: list.drop("列名",axis=1,inplace=True)→デフォルトでは保存されない、inplace=Trueで保存。
まとめて削除する時は([A,B,C])とリストで指定
例)
・列に”物理”を追加
test_list["物理"]=[80,75,65]
test_list

・”英語”を削除
test_list.drop("英語",axis=1)

※ここでは、inplace=True を追記していないので保存されない(一回きり)。
その確認のためもう一度リストを出すと削除した”英語”が戻っている↓
行(ヨコの項目)
追加: list.loc["行名"]=[数値] →デフォルトで保存される
削除: list.drop("行名")→デフォルトでは保存されない、inplace=Trueで保存。axis=0はデフォルトのため追記不要。
まとめて削除する時は([A,B,C])とリストで指定
例)
・行に ”四郎” を追加
test_list.loc["四郎"]=[85,95,60,70]
test_list
・”太郎”と"三郎"を削除
test_list.drop(["太郎","三郎"])
※ここでもinplace=True を追記していないのでこのデータは一度きりで、上書きはされない。
番号で削除
”数学"や”太郎”などの名称で操作するのが面倒なときは列/行番号で削除できる。(0はじまり)
列: list.drop(list.columns[番号],axis=1,inplace=True)
行: list.drop(list.index[番号],axis=0,inplace=True)
複数列(行)を番号指定する時は、[[0,1,2]] のように鍵カッコを二重にする必要があるので注意。
例)
・2列目(”数学”)を削除
test_list.drop(test_list.columns[2],axis=1)
要素の取得と数値の変更
取得(項目)
list.columns[列番号]
例)
test_list.index[1])
”二郎”
test_list.columns[1]
”英語”
取得(数値)
list.at[行名,列名]
list.iat[行番号,列番号]
at, iat ともに[行、列]の順になるので注意!
例)
test_list.at["三郎","物理"]
65
test_list.iat[1,2]
84
変換
・ list[列名][行名]=数値
・ list.iat[行番号,列番号]=数値
どちらでもOKだけど、iat は[行、列]の順になるので注意!

あとがき
単純な操作なんですが、何度もやらないとこんがらがりますね。
特に at, ist の記述が行、列の順になるのが ややこしい!
あと削除の .drop はinplace =Trueを追記しないと上書きされないのに対し、
変換はデフォルトで上書きされるのも混乱しました。