0
0

More than 1 year has passed since last update.

InfluxDBから取得するCSVファイルのデータ前処理について

Last updated at Posted at 2023-01-11

InfluxDBから取得されるデータのフォーマットがPythonでグラフ作成を行うには利便性が低いため,データの前処理を行う
以下に現在出力されるCSVファイルのフォーマット例と理想のフォーマット例を示す.
現在のフォーマット

日付 CPU使用量 Pod名
YYYY-MM-DD-HH-MM-SS num pod1
YYYY-MM-DD-HH-MM-SS num pod1
YYYY-MM-DD-HH-MM-SS num pod2
YYYY-MM-DD-HH-MM-SS num pod2
YYYY-MM-DD-HH-MM-SS num pod3
YYYY-MM-DD-HH-MM-SS num pod3

理想のフォーマット

日付 Pod1 Pod2 Pod3
YYYY-MM-DD-HH-MM-SS CPU使用量1 CPU使用量1 CPU使用量1
YYYY-MM-DD-HH-MM-SS CPU使用量2 CPU使用量2 CPU使用量2
YYYY-MM-DD-HH-MM-SS CPU使用量3 CPU使用量3 CPU使用量3

理想のフォーマットのようにCSVファイルを新規書き込みを行うのではなく,CPU使用量をPodごとにまとめることにした.
作成イメージを以下に示す.
{Pod1:[CPU使用量1,CPU使用量2,CPU使用量3],Pod2:[CPU使用量1,CPU使用量2,CPU使用量3],Pod3:[CPU使用量1,CPU使用量2,CPU使用量3]}
上記のようにすることで,理想のフォーマットで考えていたようにデータを扱えるようになった.

これらを実装した処理を以下に記載する

def data_preprocessing(csv):
    Pods_dic = {}
    with open(csv) as f:
        r = reader(f)
        for i,row in enumerate(r):
            #最初の4行をスキップする
            if i < 4:
                continue
            #Pod名をリストにappend
            try:
                pod = row[len(row)-1]
                if pod not in Pods_dic:
                    Pods_dic[pod] = []
            except:
                pass
    
            #CPU使用量をリストにappend
            try:
                amount = int(float(row[6]))/ 1000000000
                Pods_dic[pod].append(int(float(row[6]))/ 1000000000)
                
            except:
                pass
    for i in Pods_dic:
        print(f"Pod名:{i} CPU使用量:{Pods_dic[i][:5]},,,")

実行結果を一部記載する
Screenshot 2023-01-13 at 11.56.57.png

PodごとのCPU使用量の時間推移のグラフを作成する際にこの前処理を行うことでPythonのmatplotlibのみで可能となる.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0