python_analytics

主にpythonやライブラリーを使ったデータ解析、機械学習、統計学などについて書いていきます

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