【初心者用】Python pandas.Dataframeでの 「取得、変更、追加、削除、平均」

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.index[行番号]
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 は[行、列]の順になるので注意!

例)
test_list["英語"]["三郎"]=99
test_list.iat[0,3]=100
ともに上書き保存される↓



あとがき

単純な操作なんですが、何度もやらないとこんがらがりますね。
特に at, ist の記述が行、列の順になるのが ややこしい!

あと削除の .dropinplace =Trueを追記しないと上書きされないのに対し、
変換はデフォルトで上書きされるのも混乱しました。