トップページ | ひとつ上のページ | 目次ページ | このサイトについて | ENGLISH

2次データ作成のサンプル(Python編)

2次データ をPythonで作る場合です。

まず、表の 1次データ があるとします。 X2が1の時は機械が動作中で、0の時が停止中とします。
1次データ   1次データ

下記のPythonのコードを使って、3つの特徴量の2次データを作る例になります。 左のT2diffが、X2が1の時のグループ毎の時間です。 右のT2diffが、X2が0の時のグループ毎の時間です。 X1は、X2が1の時のX1の最大値です。 変数名は本当は変えた方が良いですが、コードが煩雑になるので、ここでは触れていません。
2次データ

groupbyによる、最大値や平均値等の統計量を計算が、一番簡単な特徴量と思います。

groupbyによる時間の計算は、sumを使う点が「なぜ?」となるかもしれませんが、理屈がわかれば簡単に計算できます。

実際の特徴量としては、「ピーク(最大値)になるまでの時間」、「2番目のピークの値」、「ある変数がピークになった時の、別の変数の値」、 といったものが欲しいことがあります。 2次データ作成のサンプル(Excel編) の場合は、データの上からの処理を具体的に自分で書くので、このような特徴量を作りこむことはやりやすいです。 Pythonの場合は、Excelの時と同じようなコードを作るか、下記のX3のような変数をうまく作って短いコードで出せるようにするか、 の2つの方向性があります。 前者の方がやりたいことを確実にできるようになりますが、コードを書くのがそれなりに手間です。 後者はアイディアが出るかにかかっています。

Pythonのコード

Pythonのコードは下記になります。 最後の行の「df2」が、2次データの表になります。

import pandas as pd # パッケージの読み込み
df= pd.read_csv("Data.csv" , engine='python')
# データを読み込む
df['X3']=df.X2.diff()
# フラグ(X2)の差分のデータを作る
df['X4'] = (df['X3'] == 1).cumsum()
# 差分のデータが「1」の時に累積する
df['X5']=df.groupby('X4').cumcount()+1
# グループ変数を作る
df['T2']=pd.to_datetime(df['T1'])
# 時刻データを作る
df['T2diff']=df.T2.diff()
# 時刻(T2)の差分のデータを作る
#この下から、2次データの作成
df21=df[df.X2 == 1].groupby(['X4']).T2diff.sum()
# グループ毎の差分の合計値を計算することで、X2が1の時の時間を計算
df20=df[df.X2 == 0].groupby(['X4']).T2diff.sum()
# 同じく、X2が0の時の時間を計算
df31=df[df.X2 == 1].groupby(['X4']).X1.max()
# グループ毎に、X2が1の時のX1の最大値を計算
df2 = pd.concat([df21, df20,df31], axis=1)
# グループ毎の計算値をひとつの表にまとめる。

このコードは、大きく2つに分かれています。 前半は元のデータ「df」に列を追加していくものです。 1行ずつの詳しい説明は、 メタ知識のデータの作成 にあります。 最終的には、dfは、下のようになります。
1次データ

このdfの段階で 1.5次データの解析 ができるようになります。
1次データ

後半は、groupbyを使って、グループ毎の集計になります。




ちなみに、 このページのグラフは、 seaborn で作っています。

順路 次は 3次データの解析

Tweet データサイエンス教室