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 |