【記事の目標】
Pandasを利用してデータ分析(差分抽出)してみよう。
【作業手順】
1.Pandasをインストール
2.Pandasをインポート
3.テストデータを作成して読み込もう
4.行の差分を取得してみよう
5.列の差分を取得してみよう
6.差分を取得したデータを表示する列を追加してみよう
1.Pandasをインストール
以下記事の「1.」と「2.」の手順で実施しましょう。
【Python】【14】Pandasを利用して表を表示してみよう
2.Pandasをインポート
以下のようにインポートしましょう。
import pandas as pd
これで、Pandasが利用できるようになりました。
3.テストデータを作成して読み込もう
今回は差分取得に利用するデータを定義していきます。
以下のように、様々な数字を設定してみましょう。
このファイルを「blog_test_4.csv」で保存しましょう。
私の場合は以下のように保存しています。
では、このファイルを読み込みましょう。
data = pd.read_csv('./csv/blog_test_4.csv', index_col='time')
index_col を指定して読み込ませます。
4.行の差分を取得してみよう
1行前との差分を取得してみましょう。
print(data.diff())
読み込んだデータに対して diff() を実施することで、1行前の列との差分を取得できます。
では、実行してみましょう。
では結果を1つずつ見ていきましょう。
1行目の場合は、1行前のデータがないため、計算できずに NaN が表示されています。
2行目以降は、自分のデータと1行前のデータの差が表示されています。
例えば2行目の場合は、
・num1 は2行目のデータが 2 で、1行目のデータが 1 なので、2-1=1
・num2 は2行目のデータが 4 で、1行目のデータが 1 なので、4-1=3
という計算がされています。
5.列の差分を取得してみよう
次は、1列前との差分を取得してみましょう。
print(data.diff(axis=1))
先ほど呼び出していた diff() というメソッドに引数として axis=1 を渡すことで1列前との差分が取得できます。
では、実行してみましょう。
では結果を1つずつ見ていきましょう。
1列目の場合は、1列前のデータがないため、計算できずに NaN が表示されています。
2列目は、自分のデータと1列前のデータの差が表示されています。
例えば3列目の場合は、
・num2 はデータが 9 で、num1 のデータが 4 なので、9-4=5
という計算がされています。
6.差分を取得したデータを表示する列を追加してみよう
「4.」と「5.」で差分を取得してきましたが、最終的に出力された値に元のデータがないと、分かり辛いですよね。
元のデータに差分を取得した列を追加してみましょう。
data["diff_num1"] = data["num1"].diff()
print(data)
diff_num1 という列を新しく追加して、num1の列の1行前の差分を設定しています。
では、実行してみましょう。
diff_num1 という列が追加され、「4.」で確認していた num1 の差分と同じデータが表示されましたね。
【補足】
・2行前や2行後のデータ差分は取れないの?
2行前や2行後の差分は diff() メソッドに引数を渡すことで取得できます。
■2行前の場合
コード:
print(data.diff(2))
実行結果:
■2行後の場合
コード:
print(data.diff(-2))
実行結果:
このように、引数の数字を変えることで、好きなデータとの差分が取得できます。
今回も引き続き Pandas を利用しています。
差分の取得はデータ分析で結構利用されると思います。
Pandas を利用して、ネットから取得したデータを分析したりして見ても良いかもしれませんね。