pythonのpandasについて
pandasについて
ここは、pandasについての備忘録 pandasはデータの持ち方としてDataFrameとSeriesがある。Dataframeは複数のSeriesで構成されている。 行はindexで管理され、インデックスには0から始まる番号やラベルがつけられている。
import numpy as np import pandas as pd
■シリーズの作成方法 シリーズはリストや辞書から作成することができる。
a = np.arange(12).reshape(3,4) b =pd.Series([a])#リスト →0 [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]] pd.Series({0:"aaa",1:"bbb"})#辞書 0 aaa 1 bbb
■シリーズの作成方法 シリーズはリストや辞書から作成することができる。
d=pd.DataFrame(np.random.randint(1,6,(4,3)), index=["one","two","three","four"], columns=["ichi","ni","san"])
- | ichi | ni | san |
---|---|---|---|
one | 3 | 2 | 5 |
two | 5 | 4 | 4 |
hree | 3 | 4 | 1 |
four | 2 | 3 | 5 |
ilocを用いれば、ラベルではなく通し番号で1列または1行を指定できる。
d.iloc[1] ichi 5 ni 4 san 4 Name: two, dtype: int32
■条件による抽出
d[d.ichi>2] or条件 d[(d.ichi>2)|(d.ni>2)] and条件 d[(d.ichi>2)&(d.ni>2)] 条件はqueryを用いて書くこともできる。 d.query("ichi>2") 抜き出しではなく,nanで埋めることもできる。 d.where("ichi>2") 抜き出しではなく,0で埋める d.where(d.ichi>2,0)
結果
ichi | ni | san | |
---|---|---|---|
one | 3 | 2 | 5 |
two | 5 | 4 | 4 |
three | 3 | 4 | 1 |
four | 0 | 0 | 0 |
■列の追加や連結と結合
assignを使うと、列を追加したDataFrameを新たに作成する。 元のDataFrameは変更されない。
d.assign(four=[3,3,3,4],five=[1,5,8,8])
ichi | ni | san | five | four | |
---|---|---|---|---|---|
one | 3 | 2 | 5 | 1 | 3 |
two | 5 | 4 | 4 | 5 | 3 |
three | 3 | 4 | 1 | 8 | 3 |
four | 2 | 3 | 5 | 8 | 4 |