望月の息抜き

在宅勤務の息抜きです。主にプログラミングについて書いていきたいと思います。

【Python】【17】Pandasを利用してデータ分析をしてみよう②

【記事の目標】

Pandasを利用してデータ分析(差分抽出)してみよう。

 

【作業手順】

1.Pandasをインストール

2.Pandasをインポート

3.テストデータを作成して読み込もう

4.行の差分を取得してみよう

5.列の差分を取得してみよう

6.差分を取得したデータを表示する列を追加してみよう

 

1.Pandasをインストール

以下記事の「1.」と「2.」の手順で実施しましょう。

【Python】【14】Pandasを利用して表を表示してみよう

 

2.Pandasをインポート

以下のようにインポートしましょう。

 import pandas as pd

これで、Pandasが利用できるようになりました。

 

3.テストデータを作成して読み込もう

今回は差分取得に利用するデータを定義していきます。

以下のように、様々な数字を設定してみましょう。

f:id:fysker:20220129150738p:plain

このファイルを「blog_test_4.csv」で保存しましょう。
私の場合は以下のように保存しています。

f:id:fysker:20220129150833p:plain

では、このファイルを読み込みましょう。

 data = pd.read_csv('./csv/blog_test_4.csv', index_col='time')

index_col を指定して読み込ませます。

 

4.行の差分を取得してみよう

1行前との差分を取得してみましょう。

 print(data.diff())

読み込んだデータに対して diff() を実施することで、1行前の列との差分を取得できます。

では、実行してみましょう。

f:id:fysker:20220129151202p:plain

では結果を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列前との差分が取得できます。

では、実行してみましょう。

f:id:fysker:20220129152530p:plain

では結果を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行前の差分を設定しています。

では、実行してみましょう。

f:id:fysker:20220129153551p:plain

diff_num1 という列が追加され、「4.」で確認していた num1 の差分と同じデータが表示されましたね。

 

【補足】

・2行前や2行後のデータ差分は取れないの?

2行前や2行後の差分は diff() メソッドに引数を渡すことで取得できます。

■2行前の場合

コード:

 print(data.diff(2))

実行結果:

f:id:fysker:20220129153834p:plain

■2行後の場合

コード:

 print(data.diff(-2))

実行結果:

f:id:fysker:20220129153904p:plain

 

このように、引数の数字を変えることで、好きなデータとの差分が取得できます。

 

 

今回も引き続き Pandas を利用しています。

差分の取得はデータ分析で結構利用されると思います。

Pandas を利用して、ネットから取得したデータを分析したりして見ても良いかもしれませんね。