前回、pandasのインストールからデータの読み込み・確認・書き込みまでの基本的な操作方法を紹介しましたが、今回は取り込みしたデータを抽出したり並び替えしたりする、より実践的な操作方法について説明したいと思います。
目次
- 列の追加・データの追加
- 列や行を指定して抜き出し
- 条件に合った行を抜き出し
- データの並び替え
列の追加・データの追加
pandas.DataFrame(df)にデータを取り込みしているとして説明する。
列を追加する方法
[新規列名]を指定することで、列の追加を初期値を作成
df[‘NEW’] = 0
列名に存在しないものを指定した場合は、新規追加
df_new = df.assign(NEW=0)
print(df_new)
元のオブジェクトと別オブジェクトで利用したい場合に利用
列名が既にあるものを指定した場合は、データ初期化
データを追加する方法
indexを指定して追加
df.loc[‘TEN’] = 0
存在しないindexを指定した場合は、行追加
存在するindexを指定した場合は、データを初期化
df.loc[‘TEN’] = [‘a10’, ‘b10’, ‘c10’]
データを指定して追加する場合、列数とデータ項目数を合わせるように(エラー発生となります)
列や行を指定抜き出し
pandas.DataFrame(df)から特定な列のみを抜き出しをする方法を説明する。
df[‘no’]
df.loc[:,’no’]
df.iloc[:,0]
df.ix[:,’no’]
df[[‘no’,’data’]]
df.loc[:,[‘no’,’data’]]
df.iloc[:,0:1]
df.ix[:,[‘no’,’data’]]
複数の列名を指定する場合は、リスト表記する
no列を5行から10行まで抜き出し
df.loc[4:9,’no’]
df.iloc[4:9,0]
df.ix[4:9,0]
数字指定は、0からスタートなので間違えないように
df.ix は、名称・数字指定どちらでも利用できるので、これだけを覚えておけば良いのかも…
条件に合った行の抜き出し
pandas.DataFrame(df)から、条件を指定してデータを抜き出しをする方法を説明する。SQLで言うSELECTクエリのようなものである。
列名 no に10があるデータを抜き出し
df[df.no == 10]
条件指定には、== , != , < , <=, > , >= を利用する
列名 no に10があるデータを抜き出し
df.query(“df.no == 10”)
列名 no に5~10があるデータを抜き出し
df.query(“df.no <= 5 & df.no <= 10”)
複数指定する場合は、and , or , not は、& , | , ~ を利用する
条件に文字列がある場合は、’ で囲むこと
条件指定に変数を利用する場合
param=10
df.query(“df.no == @param”)
条件に変数を利用する場合は、変数の頭に @ を付けること
データの並び替え
pandas.DataFrame(df)から、データの並び替え(ソート)をする方法を説明する。
df.sort(‘no’)
df.soft([‘no’,’data’])
df.sort(’no’,ascending=False)
df.sort([‘no’, ‘data’], ascending=[False, True])
複数指定する場合は、リスト表記すること
並び替えは昇順(デフォルト)、降順にする場合は ascending = False を指定すること