私はこのプロセスをスピードアップする方法を探しています。私はそれが機能しているが、それは完了するまでに何日もかかるだろう。
私は1年ごとのデータファイルを持っています。そして、私はそれらを1つのHDF5ファイルに結合して、各データラベル(データタグ)のノードを作成したいと考えています。エントリの異なる数、および異なる更新頻度は、各データ・タグのためにそこにあることをパンダのCSVをHDF5に変換するスピードアップ
a,1468004920,986.078
a,1468004921,986.078
a,1468004922,987.078
a,1468004923,986.178
a,1468004924,984.078
b,1468004920,986.078
b,1468004924,986.078
b,1468004928,987.078
c,1468004924,98.608
c,1468004928,97.078
c,1468004932,98.078
注:
データは次のようになります。実際のデータファイルにはそれぞれ約400万行、約4000個の異なるタグラベルが各1日のファイルに存在し、1年間のデータがあります。
次のコードは私がしたいことをします。しかし、すべてのファイルに対してそれを実行するには、完了まで数日かかるでしょう。私はこれをスピードアップするための提案を探しています:
import pandas as pd
import datetime
import pytz
MI = pytz.timezone('US/Central')
def readFile(file_name):
tmp_data=pd.read_csv(file_name,index_col=[1],names=['Tag','Timestamp','Value'])
tmp_data.index=pd.to_datetime(tmp_data.index,unit='s')
tmp_data.index.tz=MI
tmp_data['Tag']=tmp_data['Tag'].astype('category')
tag_names=tmp_data.Tag.unique()
for idx,name in enumerate(tag_names):
tmp_data.loc[tmp_data.Tag==name].Value.to_hdf('test.h5',name,complevel=9, complib='blosc',format='table',append=True)
for name in ['test1.csv']:
readFile(name)
、私がやろうとしていることはCSVデータを「アンラップ」することであるので、各タグはHDF5ファイルに分離しています。だから、1年分のhdf5ファイルの1つの葉にタグ "a"を付け、次の葉などにすべての "b"データを入れたいと思うので、上記のコードをそれぞれ365ファイル。私は圧縮して試してみましたが、私もindex = Falseを試しました。しかし、どちらも大きな影響を及ぼさなかった。
私は何を示唆していることは、インデックス= Falseのを使用することであると思います。私はそれほど変わらずに試しました。しかし、あなたのコードはループから重要な部分を削除します。 tmp_dataは私のcsvデータであり、各ファイルについて、私の実際のコードでは "test.txt"は実際にファイル名を置く変数です。だから、私はそれぞれのタグを別のノードに入れます。あなたのコードは、ファイル全体を1つのノードに置きます。 – Adam
明確にするために、私はコードを編集して関数を使用しました。問題は、readFileをより高速にする方法です。 – Adam