前提・実現したいこと
1秒値を1分値にしたいので、60データ当たりの平均をとりたいのですが、データの中には条件に合わないデータもあるので平均を出す際その数値を0にして60個ごとに足し算(分子)、個数を60から条件に合わないデータを除外(例条件に合わないデータがあった場合60から引いていく)(分母)最後に足し算からその除外したデータの個数を割って1分当たりの平均値を出したい。
発生している問題・エラーメッセージ
分母の個数をカウントしたものを(1440個あります)行列にしたいのですが、そこがうまくできません。
該当のソースコード
python
1##1s値を60個ごとに足す 2import pandas as pd 3import numpy as np 4 5 6##1秒値のcsvファイルの読み込み 7df=pd.read_csv('20070725_TMN0001_1s.csv',header=None,encoding='utf=8') 8##2列のデータのマイナス値を0にする 9df1=df.iloc[:,1:2].where(df>= 0,0) 10##2列目の列名を指定 11df1.columns=['データ'] 12##df1に列名「」を追加(3列目のプラス値を0にする) 13df1[None]=df.iloc[:,2:3].where(df<=0,0) 14##条件に合う要素数をカウント 15##df1の60個の要素当たりの和を計算 16df2=df1.groupby(df1.index // 60).sum() 17print(df2) 18##個体数(平均値の分母)を条件を除外し指定。 19a=0 20b=0 21c=-1 22d = [[0 for i in range(1)]for j in range(1440)] 23for x in range(86400): 24 a += 1 25 if df.iloc[x,1] < 0: 26 b += 1 27 if a==60: 28 a=0 29 c += 1 30 d[c][0]=b 31 b=0 32e = list(map(float, d)) 33print(e) 34##print((df.iloc[:,1:2] >= 0).sum()) 35##df2/d.to_csv('20070725_1m3.csv',index=()) 36 37 38
試したこと
ifとforを使い試してみましたが駄目でした
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。