やりたいこと
初心者です。
csvを読み込んで、
①範囲を指定する
②「指定した範囲の行の中で、-1以下となる数字をいくつあるかカウントする」
③↑の範囲を1行ずつずらしながらカウントしていく(総行数に達するまで)
④[カウントした値, 範囲の始めの行]でグラフ化する
ということをやりたいです。
df = pd.read_csv('1104.csv') x = df['time'] y = df['gFz']-0.98 print(df) plt.figure(figsize=(16, 8)) plt.plot(x,y)
このcsvの'gFz'列で、
0450行の間に-1以下である数字を数える(num=0)451行の間に-1以下である数字を数える(num=1)
1
2452行の間に-1以下である数字を数える(num=2)453行の間に-1以下である数字を数える(num=3)
3
4~454行の間に-1以下である数字がを数える(num=4)
…(繰り返していく)
N(総行数)-450 ~ N行の間に-1以下である数字を数える(num=N-450)
#カウント終了
[カウントした値, 範囲の始めの行]でグラフ化する
と言った具合で、
ある範囲の行(450行)のうち、-1以下である数字の個数をカウントしていき、
その個数をグラフとして出力したいのです。
例えば↓のようなイメージです。
上の図の赤線のようなグラフを作りたいです。
かなりややこしい内容ですが、
上記のグラフ作成方法について分かる方いらっしゃいましたら、
ご回答いただけると幸いです。
よろしくお願い申し上げます。
(また、調べたところ
Pythonはfor文やwhile文が遅いみたいなので、こういったプログラムは
パイソンではなく他の言語でやるべきなのでしょうか?
それともPythonでもできるのでしょうか??)
該当のソースコード
自分なりにやってみましたが、
Python3
1import pandas as pd 2import matplotlib.pyplot as plt 3%matplotlib inline 4 5df = pd.read_csv('1104.csv') 6z = df['gFz'] 7N = len(df['time']) #サンプリング数 8num = 0 9while num<=N: 10 R = z[num:num + 450] 11 C = sum(x < -1 for x in R) 12 plt.plot(num,C) 13 plt.draw() 14 num += 1
と打つと、jupyter notebookが固まってしまいます。
発生している問題・エラーメッセージ
jupyter notebookが固まってしまいます…
補足情報(FW/ツールのバージョンなど)
macOS Catalina 10.15
jupyter notebook
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。