質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

4909閲覧

while文中で、pandasの処理中にフリーズが起こる

KawaYama

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2017/02/12 10:24

###前提・実現したいこと

●while文中で、pandasの処理を複数行っているのですが、フリーズしてしまいます。何が原因でしょうか?

●環境はubuntu 16.04、conda 4.2.13、jupyter notebookです。python3で記述しています。

●まず最初に、pandas-datareaderにてFREDのUSD/JPYデータを取得して、成形加工したものをfx2(変数)に格納しています。

fx2

  • DEXJPUS

DATE
2016-01-01 NaN
2016-01-04 119.30
2016-01-05 118.95
2016-01-06 118.54
2016-01-07 118.00

###発生している問題・エラーメッセージ
●コードを実行すると、
Kernel Restarting
The kernel appears to have died. It will restart automatically.
というポップアップが表示されます。

###該当のソースコード

lang

1import pandas as pd 2import pandas.tseries.offsets as offsets 3 4a='2016-01-02' 5fx3=fx2[a:a] 6 7fx4=fx3 8day_count=1 9count=len(fx4) 10while count < 1: 11 b=pd.to_datetime(a)#aの値をdatetime64型に変更 12 c=b - offsets.Day(day_count)#2016-01-02からday_count分引く 13 d="{0:%Y-%m-%d}".format(c)#datetime64型のcを文字列型に戻す 14 fx4=fx2[d:d]#fx2をdでスライスして、fx4に保存 15 day_count += 1

###試したこと
●while文中の処理を抜き出し、個別に動かしたが、問題は起こらない。

lang

1#while文一周目と仮定して 2import pandas as pd 3import pandas.tseries.offsets as offsets 4 5a='2016-01-02' 6fx3=fx2[a:a] 7 8fx4=fx3 9day_count=1 10count=len(fx4) 11 12b=pd.to_datetime(a)#aの値をdatetime64型に変更 13c=b - offsets.Day(day_count)#2016-01-02からday_count分引く 14d="{0:%Y-%m-%d}".format(c)#datetime64型のcを文字列型に戻す 15fx4=fx2[d:d] 16day_count += 1

fx4

  • DEXJPUS

DATE
2016-01-01 NaN

lang

1#while文2周目と仮定して(while文の条件count < 1はfalseとなり、while文には入らず、終了するはず。fx4とday_countの値が変わっている) 2 3import pandas as pd 4import pandas.tseries.offsets as offsets 5 6a='2016-01-02' 7fx3=fx2[a:a] 8 9fx4=fx2[d:d] 10day_count=2 11count=len(fx4) 12 13#while文にてこのコードは実行されないはず 14b=pd.to_datetime(a)#aの値をdatetime64型に変更 15c=b - offsets.Day(day_count)#2016-01-02からday_count分引く 16d="{0:%Y-%m-%d}".format(c)#datetime64型のcを文字列型に戻す 17fx4=fx2[d:d] 18day_count += 1

fx4

  • DEXJPUS

DATE
2016-01-01 NaN

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

提示されたソースではwhileループ中にcount変数が更新されていません。
無限ループに陥っていませんか?
while内にcount=len(fx4)が必要なのでは?

投稿2017/02/12 11:30

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KawaYama

2017/02/12 12:32

can110様、回答ありがとうございます。 無事解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問