Python用データ分析モジュール「Pandas」でデータフレームのラベルを取得する方法をソースコード付きで解説します。
データフレームのラベル
Pandasでは、DataFrameObj.columnsを用いることで、データフレームのラベルを取り出すことができます。
「名前, 身長]」が各列のラベルです。
# -*- coding: utf-8 -*- import pandas as pd # データフレームの初期化 df = pd.DataFrame({ '名前' : ['西住みほ', '秋山優花里', '武部沙織'], '身長' : [158, 157, 157]}, index = ['車長', '装填手', '通信手'] ) # 表示 print(df.columns) # Index([名前, 身長], dtype=object)
データフレームのデータ型
Pandasでは、DataFrame.typesを用いることで、データフレームのデータ型を取得できます。
サンプルプログラムのソースコードは下記の通りです。
サンプルプログラムの実行結果は下記の通りです。
名前 役割 身長
0 西住みほ 車長 158
1 秋山優花里 装填手 157
2 武部沙織 通信手 157名前 object
役割 object
身長 int64
dtype: object
データフレームの基本統計量
Pandasでは、describeメソッドを用いることで、データフレームから以下の基本統計量を一括で求めることができます。
【基本統計量】
count・・・件数
mean・・・平均値
std・・・標準偏差
min・・・最小値
25%・・・第一四分位数
50%・・・中央値
75%・・・第三四分位数
max・・・最大値
サンプルプログラムのソースコードは下記の通りです。
サンプルプログラムの実行結果は下記の通りです。
身長
count 3.000000
mean 157.333333
std 0.577350
min 157.000000
25% 157.000000
50% 157.000000
75% 157.500000
max 158.000000
非常に便利な機能です。
データフレームのラベル
Pandasでは、DataFrameObj.valuesを用いることで、データフレームの値を取り出すことができます。
サンプルプログラムのソースコードは下記の通りです。
サンプルプログラムの実行結果は下記の通りです。
[[西住みほ’ 158L]
[‘秋山優花里’ 157L]
[‘武部沙織’ 157L]]
ラベルの値を取得
PythonモジュールPandasでは、values属性で特定のラベル(カラム)の値を取得します。
【書式】
DataFrameObj.[ラベル名].values
返り値:全ての値
サンプルプログラムのソースコードです。
#-*- coding:utf-8 -*- import pandas as pd def main(): # リスト生成 name = ['西住みほ', '秋山優花里', '武部沙織'] height = [158, 157, 157] position = ['車長', '装填手', '通信手'] # リスト→データフレーム df = pd.DataFrame({'名前' : name, '身長' : height}, index = position) # データフレーム表示 print(df) ''' 名前 身長 車長 西住みほ 158 装填手 秋山優花里 157 通信手 武部沙織 157 ''' # ラベル「名前」の値を表示 print(df['名前'].values) # ['西住みほ' '秋山優花里' '武部沙織'] if __name__ == "__main__": main()
ラベル・インデックスを指定して抽出
Pandasでは、locメソッドを用いることで、データフレームからラベル・インデックスを指定して抽出できます。
【書式】
DataFrameObj.loc[index, label]
【返り値】
抽出されたデータフレームオブジェクト
サンプルプログラムのソースコードは下記の通りです。
【ラベル・インデックスを1つずつ指定】
【ラベル・インデックスを範囲指定】
サンプルプログラムの実行結果は下記の通りです。
名前 身長
車長 西住みほ 158
装填手 秋山優花里 157
データフレームから列抽出
PythonモジュールPandasでは、主に2つの方法で特定の列(カラム・ラベル)だけを取り出せます。
– | 記述例 |
---|---|
方法① | column = DataFrameObj[カラム名] |
方法② | column = loc[:, カラム名] |
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*- import pandas as pd def main(): # リスト生成 name = ['西住みほ', '秋山優花里', '武部沙織'] height = [158, 157, 157] position = ['車長', '装填手', '通信手'] # リスト→データフレーム df = pd.DataFrame({'名前' : name, '身長' : height}, index = position) # データフレーム表示 print(df) ''' 名前 身長 車長 西住みほ 158 装填手 秋山優花里 157 通信手 武部沙織 157 ''' # ラベル(列)を抽出 df2 = df['名前'] # df2 = df.loc[:, '名前'] # 抽出したデータフレームを表示 print(df2) ''' 車長 西住みほ 装填手 秋山優花里 通信手 武部沙織 Name: 名前, dtype: object ''' if __name__ == "__main__": main()
データフレームから特定範囲の行・列抽出
PythonモジュールPandasでは、locメソッドで特定の行・列(インデックス・カラム)の範囲だけを取り出せます。
書式
df.loc[[ インデックス1, インデックス2, ...], [カラム1, カラム2, ...]]
返り値:指定した範囲内のデータフレーム
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*- import pandas as pd def main(): # リスト生成 name = ['西住みほ', '秋山優花里', '武部沙織'] height = [158, 157, 157] position = ['車長', '装填手', '通信手'] # リスト→データフレーム df = pd.DataFrame({'名前' : name, '身長' : height}, index = position) # データフレーム表示 print(df) ''' 名前 身長 車長 西住みほ 158 装填手 秋山優花里 157 通信手 武部沙織 157 ''' indexes = ['車長', '装填手'] # ラベル(列)を抽出 df2 = df.loc[indexes, '名前'] # 抽出したデータフレームを表示 print(df2) ''' 車長 西住みほ 装填手 秋山優花里 Name: 名前, dtype: object ''' if __name__ == "__main__": main()
データフレームから要素番号で指定して行・列抽出
PythonモジュールPandasでは、ilocメソッドで特定の要素番号の行・列(インデックス・カラム)だけを取り出せます。
書式
df.iloc[[ インデックス番号1, インデックス番号2, ...], [カラム番号1, カラム番号2, ...]]
返り値:指定した範囲内のデータフレーム
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*- import pandas as pd def main(): # リスト生成 name = ['西住みほ', '秋山優花里', '武部沙織'] height = [158, 157, 157] position = ['車長', '装填手', '通信手'] # リスト→データフレーム df = pd.DataFrame({'名前' : name, '身長' : height}, index = position) # データフレーム表示 print(df) ''' 名前 身長 車長 西住みほ 158 装填手 秋山優花里 157 通信手 武部沙織 157 ''' indexes = [0, 1] columns = [0] # ラベル(列)を抽出 df2 = df.iloc[indexes, columns] # 抽出したデータフレームを表示 print(df2) ''' 名前 車長 西住みほ 装填手 秋山優花里 ''' if __name__ == "__main__": main()
コメント