この記事では、PandasのSeriesとDataFrameの使い方についてご紹介します。
目次
Series(一次元データ)
pandasで一次元データを扱うには、Seriesを使います。
Seriesの作成
import pandas as pd ser = pd.Series([1,2,3],index=['a','b','c']) ser

インデックスと言うラベル(a,b,c)
にデータ(1,2,3)
が入っています。
ラベルを指定してデータを取り出す(loc)
ラベルaからcまでのデータを取り出すにはloc
を使って、以下のようにします。
ser.loc['a':'c']
整数で指定してデータを取り出す(iloc)
ラベルで指定せずに、データの位置を整数で指定して取り出すこともできます。iloc
を使います。
ser.iloc[0:2]
iloc
の場合は、リストのルールと同じで、始点は含まれますが終点は含まれません。上記の例だと、a,bの行が出力されます。
DataFrame(二次元データ)
二次元のデータを扱うときは、DataFrame
を使用します。
DataFrameを作成する
df = pd.DataFrame( [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],index=['r1','r2','r3','r4'],columns=['c1','c2','c3','c4']) df

行をラベルで指定する(loc)
r2行を全部取り出すには以下の通り。
df.loc['r2',:]

行と列をラベルで指定する(loc)
行と列、両方指定するには以下のようにします。
df.loc['r1':'r3','c1':'c2']

行と列を整数で指定する(iloc)
整数を指定して同じデータを取り出す場合は、以下のようにします。終点を含まないことに注意してください。
df.iloc[0:3,0:2]
演習問題
では、ここで1つ問題をやってみましょう。
r2,r3だけ出力すれば良いから、`df[‘r2′:’r3’,:]`と書くのはダメです。
c4列を取り出して、値の比較をしてください。
考え方としては、
- `df[c4]`でc4列の値を取得する。
- カッコとアンドを使って条件を定義する。
- (c4が5以上) & (c4が13以下)
答えは以下の通り。
df.loc[(df['c4'] >= 5) & (df['c4'] <= 13)]
おわり。