[解決済み] 複数のテーブルを含む.datファイルをpandasのデータフレームに読み込むにはどうしたらいいですか?
質問
私は、raw_data.dat のような .dat ファイルにデータを記録する測定器を持っています。 このフォルダ そして、ファイルの最後のテーブルをpandasのデータフレームに抽出できるようにしたいのです。
このファイルにはいくつかの表があり、ここの表組み構造が.datファイルの標準であるかどうかは分かりませんが、テキストをエクセルに貼り付けてみると、テキストは個別の表として認識されるので、おそらくパイソンに構造を正しく読み込むためのかなり標準的な方法があると思われます。私はそれを見つけることができなかったので、本当に複雑な方法を試してみました。.datファイルを文字列に読み込んで、手動でファイルの一部のトップを切り落とし、残りを.datファイルとして保存しました。私の希望は、何とかして結果を.csvまたは.xlsとして保存できるようにすることですが、それを行う方法がまだ見つかっていません。さらに、インポートした後、集計が "absolute "に変換され、保存されたファイルでは集計に戻りません。そのための私のコードは以下の通りです。
mylines = []
with open ('raw_file.dat', 'rt') as myfile:
for myline in myfile:
mylines.append(myline)
string = (mylines[8:])
with open("updated.dat", "w") as output:
output.write(str(string))
私はpythonにかなり慣れていないので、関数を正しく使えるかどうか確信が持てないことを認めざるを得ません。それでも、私が試みている回避策よりも、もっと簡単な方法があることを望みます。
どのように解決するのですか?
欲しいテーブルが8行目から始まることが確認できれば、ファイルを8行目から順にインデックス付けする以上の複雑なことをする必要はない。そこから、文字列操作とリスト内包を使ってデータをきれいにすることができるのです。
import pandas as pd
# Read the data.
with open('raw_data.dat', 'r') as fh:
lines = fh.readlines()[8:]
# Remove newlines, tabs, and split each string separated by spaces.
clean = [line.strip.replace('\t', '').split() for line in lines]
# Feed the data into a DataFrame.
data = pd.DataFrame(clean[1:], columns=clean[0])
を出力します。
Time Variab1e1 ... v18 v19
0 +0.00000000e+000 +3.04142181e-002 ... +0.00000000e+000 +0.00000000e+000
1 +1.00000000e+000 +1.96144191e-001 ... +1.00000000e+000 +0.00000000e+000
2 +2.00000000e+000 +3.75599731e-001 ... +2.00000000e+000 +0.00000000e+000
値を浮動小数点に変換したい場合は、データをDataFrameに変換する前に行います。
headers = clean[0]
rows = [[float(value) for value in row] for row in clean[1:]]
data = pd.DataFrame(rows, columns=headers)
で、よりすっきりしたフレームになります。
Time Variab1e1 Variable2 Variable3 Variable4 ... v15 v16 v17 v18 v19
0 0.0 0.030414 0.0 1.383808 0.0 ... 0.0 0.0 15.0 0.0 0.0
1 1.0 0.196144 1.0 7.660262 1.0 ... 0.0 1.0 15.0 1.0 0.0
2 2.0 0.375600 2.0 15.356726 2.0 ... 0.0 2.0 15.0 2.0 0.0
関連
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み] JSONデータをファイルに書き込むにはどうしたらいいですか?
-
[解決済み] ローカルディレクトリからrequirements.txtファイルに従ってpipを使用してパッケージをインストールするにはどうすればよいですか?
-
[解決済み] テキストファイルを文字列変数に読み込んで、改行を除去するには?
-
[解決済み] Pythonでファイルサイズを確認するには?
-
[解決済み] 2次元アレイにおけるピーク検出
-
[解決済み] pandasのデータフレームのインデックスをカラムに変換する方法
-
[解決済み] 複数のcsvファイルをpandasにインポートし、1つのDataFrameに連結する。
-
[解決済み] pandasデータフレームの列を正規化する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Pythonによるjieba分割ライブラリ
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない