問題タブ [data-processing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
695 参照

c++ - 大量の ASCII 数値を読み取り、バイナリ形式で書き込む

たとえば、空白で区切られた ASCII テキストとして格納された約 1.5 Gb 相当の浮動小数点数を含むデータ ファイルがあります1.2334 2.3456 3.4567

このような数値を処理する前に、まず元のファイルをバイナリ形式に変換します。floatこれは、またはを使用するかどうかを選択しdouble、ファイル サイズを ( の場合は約 800 MB にdouble、 の場合は 400 MB にfloat) 削減し、データの処理中に適切なサイズのチャンクで読み取ることができるため、便利です。

ASCII からバイナリへの変換を行うために、次の関数を作成しました。

を高速化したいのacii_to_binaryですが、何も思いつかないようです。ファイルを 8192 バイト単位で読み取ってから、別のサブルーチンでバッファを処理しようとしました。これは非常に複雑に思えます。なぜなら、バッファ内の最後の数文字が空白 (この場合はすべて良い) であるか、切り捨てられた数値 (非常に悪い) である可能性があるからです。

この関数を高速化するにはどうしますか? ブーストなどの依存関係を追加せずに、標準の C++ (C++11 で問題ありません) に依存したいと思います。

ありがとうございました。

編集:

@DavidSchwarts:

私は次のようにあなたの提案を実装しようとしました:

しかし、データを書き込んでいないようです!私はそれに取り組んでいます...

0 投票する
1 に答える
3393 参照

arrays - いくつかの条件に基づいてデータ配列から値を返す

3 列のデータ テーブルがあります (見やすくするために外観は簡略化されていますが、配置とデータ形式は保持されています。最初の列ADate地域設定で書式設定されていますが、テキストではありません):

リストはかなり長くなる可能性があり、定期的に更新されます。私が達成する必要があるのはこれです:同じシートに、次の計算されたセルが列Eから始まるように配置されています(つまり、データと計算された領域の間に空白の列Dがあります):

A:C基本的に、次のデータ配列から調べる必要があります。

  1. E( のモジュール名に対応する)の値のリストと、同じモジュールの値の中で最大であるが、今日から始まる最後の 1 週間Bの対応する値を返す必要があります。
  2. 過去 1 週間にこのモジュールのレコードがない場合 - Date は空で、"No change"文字列は Value である必要があります (xxxxx上記のサンプルのように、最初の配列に関連し、今日が 2 月 9 日であると仮定します)。

#2に関しては、次のようになりました。

  • の場合Date:=IF(SUMPRODUCT(--(A:A>TODAY()-7),--(A:A="xxxxx"))=0,"")
  • For Value: =IF(F5="","No change")(左側の対応する日付をここで確認します)

#1については、行き詰まっており、ガイダンスまたはアドバイスが必要な場所です. などでさまざまなことを試しましたがMATCHVLOOKUP成功にはほど遠いものでした。エラーが発生したか、関連性のない結果が得られました。

それが重要な場合 - 日付は常にリストの最後に新しいレコードが来るように並べ替えられます。つまり、新しいレコードは一番下に追加されます。同じモジュールの場合、同じ日に複数のレコードが存在する場合があります。サンプルまたは説明が明確でない場合は、コメントで返信してください。詳細を追加します。ありがとう!

0 投票する
2 に答える
574 参照

python - Python で大量の CSV を再編成するためのより効率的な方法を探しています

私は、大きな出力 .txt ファイルからデータを取得し、.csv の形式で特定の値を解析して再編成する必要があるという問題に取り組んできました。

データの種類 (フライト ID、緯度、経度など) に基づいて列の .csv にすべてのデータを入力するスクリプトを既に作成しましたが、正しい順序ではありません。すべての値は、同じフライト ID に基づいて、タイム スタンプの早いものから新しいものの順にグループ化されることを意図しています。幸いなことに、私の .csv にはすべての値が正しい時間順で含まれていますが、フライト ID に従って適切にグループ化されていません。

私の説明を明確にするために、今はこのように見えます。

(「時間 x」は単に説明するためのものです):

そして、次のように注文することになっています:

簡単にするために、私が出力した .csv には 130 万行あります。順序を修正するために書いた次のスクリプトのロジックは 99% 正しいと確信していますが、非常に非効率的ではないかと恐れています。進行状況を確認するためだけに進行状況バーを追加しましたが、残念ながら次のようになります。

ここに画像の説明を入力

クランチを処理するコードは次のとおりです(必要に応じて、問題の領域までスキップしてください)。

ここまでは問題ありませんが、次のセグメントでは、コンピューターが詰まるか、コードがうまく動作しません。

アイデアは、すべての一意の値について、130 万の値を順番に繰り返し処理し、各出現のインデックスを順番に返し、それらの値をリストに追加するというものでした。その後、インデックスの膨大なリストを読み取り、その行のデータの内容を別の .csv ファイルに書き込むつもりでした。タダ!おそらく非常に非効率的です。

ここで何が問題なのですか?この問題を解決するためのより効率的な方法はありますか? 私のコードに欠陥があるのでしょうか、それとも私のラップトップに残酷なだけなのでしょうか?

アップデート:

私が処理しているデータの量では、9 ~ 10 時間かかることがわかりました。4.5で半分を正しく吐き出しました。今のところ一晩のクランチを回避できますが、次回はおそらくデータベースまたは別の言語を使用することになるでしょう. 事前に自分が何をしているのかを知っていればよかったのに(笑)。

SSD のスリープ設定を調整した後、クランチするのに 3 時間しかかかりませんでした。

0 投票する
1 に答える
358 参照

machine-learning - 不均一データの解析

2 つ (または 1 つ) の有用な部分を持つデータのコレクションを解析しようとしていますが、さまざまな方法で編成されている可能性があります。

物事がどのように整理されるかのすべての組み合わせを予測する方法がないため、正規表現の膨大なコレクションを使用したくありません (また、無関係なテキストが含まれる場合もあります)。これに最適な機械学習のブランチがあるように感じますが、私はそれを知るのに十分な経験がありません.

0 投票する
1 に答える
359 参照

php - PHPでジョブを使って大量のデータを処理する

各プロジェクトを購読している特定の数の人々がいる「プロジェクト」を含むWebサイトがあります。

プロジェクトの「最後」に、すべてのサブスクライバーが収集され、処理されます。この場合、約 1,000 人のサブスクライバーがあり、そのデータを取得して処理する必要があります。また、配列内の各データ セットと共に格納される関連データもいくつかあります。

前回、最大 300 個のアイテムを処理したときに、PHP がメモリ不足になりました。メモリをブーストし、処理できるようにしました。今回はそんなことはないと思います。

現在、プロジェクトをプルしてサブスクライバーを処理するジョブを使用しています。このジョブでは、SQL クエリを実行してすべての「サブスクライバー」を取得し、それらとその関連データを配列に格納します。次に、配列が繰り返されて、個々のサブスクライバを処理する個々のジョブが作成されます。

私の質問は:

「ブロック」などでこれを行う方法はありますか? または、メモリへの影響を軽減するより良い方法はありますか? 何千人もの加入者がいる場合に備えて、これを拡張できるようにしたいと考えています。

今はこんな流れです。

  • プロジェクト「終了」
  • ジョブが開始され、いくつかのフラグが設定され、すべてのサブスクライバーがプルされます
  • MySQL (サブスクライバー) からのデータの配列がループされ、サブスクライバーごとに個別のジョブが作成されます。
  • 各サブスクライバ ジョブは、エンジンによって処理されます。

これを行うための最良のプロセスを特定するのに苦労しています。

0 投票する
2 に答える
441 参照

c# - 平均に基づくデータの予測

PC のシリアル ポートに毎秒 GPS データが入力されています。GPS データの処理に成功し、緯度と経度が別々の配列に浮動小数点数として格納されました。

ほとんどの場合、緯度と経度の数値は同じままで、GPS の位置は 5 メートルごとにしか変化しません。配列内の緯度または経度の値が変更された場合、変更の間に格納されたデータ ポイントの緯度または経度の平均に基づいて、プログラムで予測する必要があります。例えば:

latitudeこれが配列の内容であるとしましょう:

プログラムで配列の内容を次のように変更したいと思います。

私は問題に取り組んでみましたが、私の方法はうまくいきません:-/ 私はC#が初めてです。これを行うためのより良い方法があるはずです。これは、予測を実行しようとする私のコードのスニペットです (少し後---GPS coordinate prediction---のビットは、機能しないビットです)。

0 投票する
0 に答える
1434 参照

r - 階層的クラスタリングのためのカテゴリデータの準備

R を使用して、次のようなデータの階層的クラスタリングを実行したいと考えています。

これは、L2 が機能 W1 を L1 と L3 の両方と共有し、機能 W2 が L1 と L3 に存在するが、値が異なり、L2 には存在しないことを意味すると考えられます。(編集L は言語、W はこれらの言語の単語の語幹であり、値 (p、r など) は、これらの単語が特定の言語でどのように派生するかを示しています。異なる言語は共通の起源を示唆するかもしれません. それが欠けている場合, それは明確ではありません: それは何かを意味しているかもしれません, または私の情報源が不完全であるかもしれません.ステムがそれらに存在し、それらがどのように動作するか. end edit )

このデータを変換して分類を実行できるようにする方法を説明し、どの類似性指標を使用すべきかアドバイスしていただけますか?

0 投票する
1 に答える
33 参照

preprocessor - 特定の分散を持つようにデータ ベクトルを調整する

整数のセット x, 0<=x<=255 があります。このデータを次のように変換する必要があります。

  1. セット内の値の平均 == 0
  2. 分散 == 1

最初の条件を満たすことができます:

しかし、私は2番目のものに会う方法がわかりません。

私が持っている最良のアイデアは、現在の分散を計算し、すべての整数を A で除算または乗算して、目的の分散に近づけることです。次に、A=A/2 をエラーが小さくなるまで繰り返します。

(x の平方根を推定する基本的なアルゴリズムに似ています。)

これを達成する別の(より効率的な)方法はありますか?