Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

pandasの使い方(3) インデックス

pandasのインデックスオブジェクトについて。

行や列のインデックスは「インデックスオブジェクト」として保持。
行:DataFrame.index
列:DataFrame.columns
 

import numpy as np
import pandas as pd

data = {"year": [2010, 2011, 2012, 2013],
        "pref":["千葉", "山口", "岐阜", "東京"]}

f = pd.DataFrame(data)
print(f)
#   pref  year
# 0   千葉  2010
# 1   山口  2011
# 2   岐阜  2012
# 3   東京  2013

print(f.index)   # RangeIndex(start=0, stop=4, step=1)
print(f.columns) # Index(['pref', 'year'], dtype='object')

 
インデックスオブジェクトは固定長のsetのような動作。

print(0 in f.index) # True
print(4 in f.index) # False

 
・インデックスオブジェクトのメソッド

append インデックスオブジェクトを追加
diff 集合の差
intersection 集合の積(共通部分)
union 和集合
isin 各要素が含まれているかのbool配列
delete i番目の要素を削除
drop 指定した値を削除
insert 要素の挿入
is_monotonic 各要素が1つ前の要素と等しいか大きいならTrue
is_unique 重複なしならTrue
unique 重複のない配列にする

 

print(f.index)   # RangeIndex(start=0, stop=4, step=1)
ind = f.index.insert(2, 10)
print(ind)       # Int64Index([0, 1, 10, 2, 3], dtype='int64')

print(f.index.isin([1, 3, 10])) # [False  True False  True]
f2 = f.reindex(ind)
print(f2)
#   pref    year
# 0    千葉  2010.0
# 1    山口  2011.0
# 10  NaN     NaN
# 2    岐阜  2012.0
# 3    東京  2013.0

 

再インデックス reindex

新しいインデックスで再構成
 
reindexのメソッド

index 行に対する新しいインデックスを指定
columns 列に対する新しいインデックスを指定
method ffill, pad:前方穴埋め、 bfill, backfill:後方穴埋め
fill_value 欠損を埋める値
limit method梅のときの最大個数
level 階層型インデックスの階層指定
copy 変更前と同じインデックスのとき、Trueならコピー。デフォルトはTrue