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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

977閲覧

計測機器の測定データCSVのデータ処理方法を検討している

yuujiMotoki

総合スコア90

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/08/14 22:03

編集2018/08/14 22:58

#内容
測定機器から吐き出されるCSVデータをグラフ化するアプリケーションを作ろうと思っています。

このようなアプリを作る際に、データを取り込む構想としては、
現状はCSVを配列に取り込む方法を使っているのですが、
データベースも使えるものでしょうか?

#やりたいこと
例えば下記のようなデータがあります。
(実際には実験水準によって、もっと列項目は増大しますが、イメージのために記載しています)

|サンプル|試験項目|試験時間|測定値|
|:--:|:--
|1|TS|0|5|
|1|TS|100|5.25|
|1|TS|200|5.1|
|2|TS|0|5|
|2|TS|100|5.2|

#現状
現状は配列を作る際に、IF条件式などを使って分岐して、
表示させたいデータを抽出して、配列に落とし込んでいます

これはSQLを使えば、容易に抽出できると思うのですが、
何分、まだデータベースをまともに使ったことがなくて、
そもそも、このような用途で使えるのかを疑問視しています。

生産機器の測定系のデータなので、データ数は膨大になってきますが、
実用的なのでしょうか?

PYTHONなどでは、配列が使えるモジュール(たとえばpandas)に取り込んで、
可視化するようなことが多いと思います。

ネイティブがC言語なので、速いと思いますが、
それに比べてデータベースのアクセス速度は、どんなものなのでしょうか?

たとえばですが、下記のような測定結果がサンプル毎に生成されます。
これに試験条件3、放置時間水準5、サンプル数45のマトリクスとなりますので、
csvファイルが675個になります。

ほしいデータは、各抵抗(R1-R11)のACTUALデータ値となりますので
データとしては、7425行ぐらいになります。
(ただ、これはかなり少ない例でして、実際のRは2000個ぐらいあり
この場合は、742500行ぐらいにはなります)

IMG000001, R# , TP1 , TP2 , Min , Max , Result, Actual
IMG000001, R1 , 2 , 4 , 0.00m, 5.000, Pass, 0.0069610
IMG000001, R2 , 2 , 5 , 0.00m, 5.000, Pass, 0.017759
IMG000001, R3 , 20 , 19 , 0.00m, 5.000, Pass, 2.0708
IMG000001, R4 , 8 , 7 , 0.00m, 5.000, Pass, 2.0324
IMG000001, R5 , 14 , 13 , 0.00m, 5.000, Pass, 2.0273
IMG000001, R6 , 12 , 11 , 0.00m, 5.000, Pass, 2.0701
IMG000001, R9 , 22 , 21 , 0.00m, 5.000, Pass, 0.94770
IMG000001, R10 , 18 , 17 , 0.00m, 5.000, Pass, 1.1666
IMG000001, R11 , 6 , 5 , 0.00m, 5.000, Pass, 0.020258
IMG000001, R8 , 16 , 15 , 0.00m, 5.000, Pass, 0.99980
IMG000001, R7 , 10 , 9 , 0.00m, 5.000, Pass, 2.0525

Isolation Data [3]
IMG000001, Iso: Net1(C),Net2(D) (392) [999.00] >100.22 <<5,7>>
IMG000001, Iso: Net1(C),Net3(D) (400) [999.00] >100.22 <<5,9>>
IMG000001, Iso: Net1(C),Net4(D) (400) [999.00] >100.22 <<5,11>>
IMG000001, Iso: Net1(C),Net5(D) (400) [999.00] >100.22 <<5,13>>
IMG000001, Iso: Net1(C),Net9(D) (402) [999.00] >100.22 <<5,21>>
IMG000001, Iso: Net1(C),Net6(D) (400) [999.00] >100.22 <<5,15>>
IMG000001, Iso: Net1(C),Net7(D) (402) [999.00] >100.22 <<5,17>>
IMG000001, Iso: Net1(C),Net13(D) (401) [999.00] >100.22 <<5,26>>
IMG000001, Iso: Net1(C),Net12(D) (401) [999.00] >100.22 <<5,25>>
IMG000001, Iso: Net1(C),Net8(D) (401) [999.00] >100.22 <<5,19>>
IMG000001, Iso: Net1(C),Net16(D) (401) [999.00] >100.22 <<5,27>>
IMG000001, Iso: Net1(C),Net10(D) (401) [999.00] >100.22 <<5,23>>
IMG000001, Iso: Net1(C),Net11(D) (400) [999.00] >100.22 <<5,24>>
IMG000001, Iso: Net16(C),Net8(D) (394) [999.00] >100.22 <<27,19>>
IMG000001, Iso: Net10(C),Net11(D) (393) [999.00] >100.22 <<23,24>>
IMG000001, Iso: Net8(C),Net2(D) (393) [999.00] >100.22 <<19,7>>
IMG000001, Iso: Net8(C),Net3(D) (400) [999.00] >100.22 <<19,9>>
IMG000001, Iso: Net8(C),Net4(D) (400) [999.00] >100.22 <<19,11>>
IMG000001, Iso: Net8(C),Net5(D) (401) [999.00] >100.22 <<19,13>>
IMG000001, Iso: Net2(C),Net3(D) (394) [999.00] >100.22 <<7,9>>
IMG000001, Iso: Net3(C),Net4(D) (393) [999.00] >100.22 <<9,11>>
IMG000001, Iso: Net4(C),Net5(D) (393) [999.00] >100.22 <<11,13>>
IMG000001, Iso: Net12(C),Net13(D) (393) [999.00] >100.22 <<25,26>>

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

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

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

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

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

tachikoma

2018/08/14 22:29

作成されるcsvのファイルサイズや行数、コラムの数は概算でどれくらいのオーダーになりそうですか?
guest

回答2

0

ベストアンサー

速度の前に、pandasでもクエリを発行することが可能です。
https://note.nkmk.me/python-pandas-query/


一概にデータベースの速度は言えません。

pandasのデータフレームと一般的なデータベースの違いはデータが物理的にどこにあるかになるかと思います。

pandasは普段メモリ上にデータを持っています。
インデックス付きの配列とお考えいただければ。
アクセス速度が速い代わりに、クラッシュしたらデータが飛びます。
一つのPC上のメモリに乗るので、並列化には別のケアが必要です。
メモリに乗らない量のデータを扱うには工夫が必要です。

一般的なデータベースはデータを非揮発性ドライブ上に持ちます。
アクセス速度が下がる代わりに電源を切っても内容は保持されます。
分散型のデータベースを使えば並列化にも比較的簡単に対応します。その分使い方の学習コストが上がりますが。
最近(?)ではデータが吹っ飛んでも構わないからアクセス速度を高めるためにデータベースをメモリ上に持つこともできます。
https://qiita.com/kumagi/items/db11c1053f14f7e47784

データベースとpandasを比較するというより、データベースはcsvと比較されるべきかもしれません。
データベース=csv+検索機能+その他、のような。

投稿2018/08/14 22:31

編集2018/08/14 22:34
mkgrei

総合スコア8560

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

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

yuujiMotoki

2018/08/14 23:05

データの記憶の仕方で、速度が変わってくるのですね。非常に勉強になりました。 詳細を更新しましたが、実際にはCSVデータに不必要な部分があるため、 最初にCSV→配列の読み込みの段階で、データのクリーニングをしています。 最終的には、クリーニング後のデータの保存(データの安全性)と、 アクセスの速さの両方が必要になるので、下記のようなフローにしようかと思いました。 CSVデータ読み出し → クリーニング → データベースに書き込む データベースの読み出し → PANDASに入れる → プロットする 今回はpythonの例を書いたのですが、実際にはPYTHONが使える環境にはないため、 VB.NETかVBSCRIPTで書くことにはなるのですが VB.NETでは、PANDASのようなライブラリが無いので、ここも悩みどころになっています。
guest

0

実際グラフ化するデータ量は、どれぐらいの件数になるのでしょうか?クリーニングしたデータは加工(扱うデータの範囲が大きい場合、たとえば、万単位とか千単位とかが必要になるのでしょうか? グラフとは、どのような種類のグラフを指すのでしょうか?その場合どの値がx軸y軸z軸に該当するのでしょうか?
それによっては、vb.netでグラフ化しなくても、excelに読み込んで、グラフ化することも容易に
可能かも知れません。

投稿2018/10/09 11:28

akirafudo6

総合スコア341

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問