質問編集履歴

1

質問の詳細を追加

2021/05/17 03:57

投稿

nishi11
nishi11

スコア0

test CHANGED
File without changes
test CHANGED
@@ -10,6 +10,208 @@
10
10
 
11
11
 
12
12
 
13
+ 説明し易いように気温を例にあげましたが、行いたい内容は下記になります。
14
+
15
+
16
+
17
+ バッテリーの出力電圧と出力電流を0.2秒毎にサンプリングしたデータ(csv)があります。
18
+
19
+ データの一部です。
20
+
21
+
22
+
23
+ NO. time  V A
24
+
25
+ 13 00:02.4 23.48 5.695
26
+
27
+ 14 00:02.6 18.8 14.98
28
+
29
+ 15 00:02.8 18.77 14.675
30
+
31
+ 16 00:03.0 23.72 6.645
32
+
33
+ 17 00:03.2 22.64 7.81
34
+
35
+ 18 00:03.4 26.87 0.355
36
+
37
+ 19 00:03.6 27.1 0.02
38
+
39
+ 20 00:03.8 27.05 0.14
40
+
41
+ 21 00:04.0 25.55 1.99
42
+
43
+ 22 00:04.2 19.31 13.305
44
+
45
+ 23 00:04.4 18.52 14.705
46
+
47
+ 24 00:04.6 18.49 14.69
48
+
49
+ 25 00:04.8 18.4 14.705
50
+
51
+ 26 00:05.0 18.39 14.67
52
+
53
+ 27 00:05.2 18.33 14.7
54
+
55
+
56
+
57
+ このデータから次のことを求め、分析したいと考えています。
58
+
59
+ 1 時間(time)と出力電流(A)のグラフ化
60
+
61
+ 2 バッテリーの消費容量
62
+
63
+ 3 電流10A以上の合計時間
64
+
65
+ 4 電流5A以上10A未満の合計時間
66
+
67
+
68
+
69
+ 1グラフ化と2消費容量は求めることができました。
70
+
71
+ ![イメージ説明](7b56895629a7cf3445da25cb556c5706.png)   
72
+
73
+ X軸:時間 Y軸:電流 第二軸Y:消費容量 赤線:出力電流 青線:累積消費容量
74
+
75
+
76
+
77
+ 時系列データで、月、日、時間ごとの集計方法については、いろいろなサイトに載っているのですが、3,4電流条件を指定した場合の合計時間の取得方法がわかりません。ご教授いただければ幸いです。
78
+
79
+                
80
+
81
+
82
+
83
+
84
+
85
+ ### 作ったソースコード
86
+
87
+ ```python
88
+
89
+ import matplotlib.pyplot as plt
90
+
91
+ import matplotlib.dates as dt
92
+
93
+ import pandas as pd
94
+
95
+ import datetime
96
+
97
+ #ノートブック内にグラフを表示するために必要
98
+
99
+ %matplotlib inline
100
+
101
+
102
+
103
+ df=pd.read_csv("CSV.csv",nrows=4790,encoding='shift_jis',header=0,index_col=0)
104
+
105
+
106
+
107
+ #datetime型に変換
108
+
109
+ df['time']=pd.to_datetime(df['time'], format='%M:%S.%f')
110
+
111
+ #datetime型から分,秒、マイクロ秒の抽出
112
+
113
+ a=df['time'].dt.minute
114
+
115
+ b=df['time'].dt.second
116
+
117
+ c=df['time'].dt.microsecond
118
+
119
+
120
+
121
+ #積分用に経過時間(秒)を取得
122
+
123
+ d=a*60+b+c/1000000
124
+
125
+ df['T']=d
126
+
127
+ #累積の台形則による数値積分
128
+
129
+ from scipy import integrate
130
+
131
+ x=df['T']
132
+
133
+ y=df['A']
134
+
135
+ df['integral']=integrate.cumtrapz(y,x,initial=0)
136
+
137
+ #消費容量の単位をAsからmAhに変換
138
+
139
+ cap = df['integral']*1000/3600
140
+
141
+
142
+
143
+ #グラフ化
144
+
145
+ import numpy as np
146
+
147
+ #日本語を表示するためにjapanize_matplotlibをインポート
148
+
149
+ import japanize_matplotlib
150
+
151
+ #時系列データの軸目盛の設定のため
152
+
153
+ import matplotlib.dates as mdates
154
+
155
+ fig, ax1 = plt.subplots(figsize=(30, 10))
156
+
157
+ X=df['time']
158
+
159
+ Y=df['A']
160
+
161
+ ax1.plot(X,Y,color='red')
162
+
163
+ ax1.xaxis.set_major_locator(mdates.MinuteLocator(byminute=range(0, 3, 1)))
164
+
165
+ ax1.xaxis.set_major_formatter(mdates.DateFormatter('%M-%S'))
166
+
167
+ #X軸を共有してY軸を第2軸に設定
168
+
169
+ ax2=ax1.twinx()
170
+
171
+ ax2.plot(X,cap,color='blue')
172
+
173
+ ax2.set_yticks( np.arange(0,200,10) )
174
+
175
+ #軸ラベルのの回転
176
+
177
+ ax1.tick_params(axis='x', rotation=90)
178
+
179
+ ```
180
+
181
+ ### 試したこと
182
+
183
+
184
+
185
+ ここに問題に対して試したことを記載してください。
186
+
187
+
188
+
189
+ ### 補足情報(FW/ツールのバージョンなど)
190
+
191
+
192
+
193
+ ここにより詳細な情報を記載してください。
194
+
195
+ ### 前提・実現したいこと
196
+
197
+
198
+
199
+ ここに質問の内容を詳しく書いてください。
200
+
201
+ (例)PHP(CakePHP)で●●なシステムを作っています。
202
+
203
+ ■■な機能を実装中に以下のエラーメッセージが発生しました。
204
+
205
+
206
+
207
+ ### 発生している問題・エラーメッセージ
208
+
209
+
210
+
211
+ ```
212
+
213
+ エラーメッセージ
214
+
13
215
  ```
14
216
 
15
217