はじめに
上の記事でCSV化したLinuxのパフォーマンスデータをPythonでグラフ化する。
前提
- Jupyter Notebookを使用
- sarで取得したデータはすでにCSV化してあるものとする
- 今回はCPU使用率をグラフ化する
必要なモジュールのインポート
今回使用するモジュールをインポートする。
なお、以降は全てJupyterNotebook上で実行している。
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
ファイルの読み込み
データフレームとしてCSVファイルを読み込む。
df = pd.read_csv('test-sar001.csv', names=['hostname', 'interval', 'time', 'value1', 'value2', 'value3'])
CPU使用率の計算
CPU使用率の計算のため、value1がCPU全体を示すallになっておりvalue2がCPUのidleの割合を示す%idleになっている行をdfから抜き出す。
まず、df2として、value2が%idleとなっている行を抜き出す。
さらにdf3として、value1がallになっている行を抜き出す。
df2 = df[df['value2'] == "%idle"]
df3 = df2[df2['value1'] == "all"].reset_index(drop=True)
CPU Usageとして、100からvalue3を引いた値をセットする。(100から%idleを引いた値を使用率としている)
df3['CPU Usage'] = 100.0 - df3['value3']
df3を表示すると以下のようになっている。
df3
hostname interval time value1 value2 value3 CPU Usage
0 test03 1 2024-12-28 13:44:21 all %idle 99.01 0.99
1 test03 1 2024-12-28 13:44:22 all %idle 93.47 6.53
2 test03 1 2024-12-28 13:44:23 all %idle 93.07 6.93
3 test03 1 2024-12-28 13:44:24 all %idle 92.96 7.04
4 test03 1 2024-12-28 13:44:25 all %idle 92.12 7.88
... ... ... ... ... ... ... ...
295 test03 1 2024-12-28 13:49:16 all %idle 91.63 8.37
296 test03 1 2024-12-28 13:49:17 all %idle 92.61 7.39
297 test03 1 2024-12-28 13:49:18 all %idle 93.00 7.00
298 test03 1 2024-12-28 13:49:19 all %idle 93.00 7.00
299 test03 1 2024-12-28 13:49:20 all %idle 93.00 7.00
300 rows × 7 columns
timeから時刻のみ取り出したものをtime2として追加する。
df3['time2'] = df5['time'].str[-8:]
df3
hostname interval time value1 value2 value3 CPU Usage time2
0 test03 1 2024-12-28 13:44:21 all %idle 99.01 0.99 13:44:21
1 test03 1 2024-12-28 13:44:22 all %idle 93.47 6.53 13:44:22
2 test03 1 2024-12-28 13:44:23 all %idle 93.07 6.93 13:44:23
3 test03 1 2024-12-28 13:44:24 all %idle 92.96 7.04 13:44:24
4 test03 1 2024-12-28 13:44:25 all %idle 92.12 7.88 13:44:25
... ... ... ... ... ... ... ... ...
295 test03 1 2024-12-28 13:49:16 all %idle 91.63 8.37 13:49:16
296 test03 1 2024-12-28 13:49:17 all %idle 92.61 7.39 13:49:17
297 test03 1 2024-12-28 13:49:18 all %idle 93.00 7.00 13:49:18
298 test03 1 2024-12-28 13:49:19 all %idle 93.00 7.00 13:49:19
299 test03 1 2024-12-28 13:49:20 all %idle 93.00 7.00 13:49:20
300 rows × 8 columns
これで準備ができたので、matplotlibを使用してグラフを描画する。
plt.savefigは作成したグラフをpngとして描き出すために指定している。
plt.rcParams['figure.figsize'] = (16.0, 3.0)
df3.plot(x='time2', y=['CPU Usage'])
plt.xlabel('')
plt.savefig("test-csv001.png")
以上。