私はパンダの使用をシミュレートして、常に変化するファイルにアクセスしようとしています。pandasのストリーミングデータ
私は1つのファイルにcsvファイルを読み込み、それに行を追加してから、ランダムな時間スリープして一括入力をシミュレートします。
import pandas as pd
from time import sleep
import random
df2 = pd.DataFrame(data = [['test','trial']], index=None)
while True:
df = pd.read_csv('data.csv', header=None)
df.append(df2)
df.to_csv('data.csv', index=False)
sleep(random.uniform(0.025,0.3))
2番目のファイルがデータフレームの形状を出力することによって、データの変化をチェックしている:
import pandas as pd
while True:
df = pd.read_csv('data.csv', header=None, names=['Name','DATE'])
print(df.shape)
私はDFの正しい形状を取得していながら、それに問題があり、そこにされていますそれが出力されている特定の時間は(0x2)
です。
すなわち:
...
(10x2)
(10x2)
...
(10x2)
(0x2)
(11x2)
(11x2)
...
これは、形状が一部なくとの間の各変化(データフレームに追加するファイル)で発生しました。
これは、最初のスクリプトがファイルを開いてデータを追加するときに発生し、2番目のスクリプトはそれにアクセスできないため、データ損失が発生することになります(0x2)。
ストリームに直接アクセスすることはできません。出力ファイルのみにアクセスすることはできません。それとも他の解決策がありますか?
編集
この目的は、「オンザフライ」だけ新しいデータをロードする(私はそれを行うコードを持っている)と分析を行うことです。分析の一部には、出力/秒、グラフ(ストリームプロットと同様)、その他の数値計算はほとんどありません。
最大の問題は、私がcsvファイルのみにアクセスできることと、損失や遅延なしにデータを分析できるようにする必要があることです。
基本的に目標は何ですか?ファイルの変更をチェックするウォッチドッグのようなものが、より良いアプローチかもしれませんか? –
ロックを実装して、一度に1つのプロセスだけがファイルを開くことができるようにすることもできます.UNIXにはさまざまな方法があります。http://stackoverflow.com/questions/29520587/checking-running-python-script-within-the- python-script/29522672#29522672 1つのプロセスの読み込みと他の書き込みはおそらくあなたのデータを失うことはありませんが、変更をテストするためにデータを使用している場合、不正な出力が発生します –
ウォッチドッグは面白いツールのようです。私は詳細を説明するために私の質問を編集しました。 – Leb