2016-04-09 16 views
1

私は数ヶ月前に持っていなかったパンダに問題があります。私はユーザー入力(tkinterを使用)から一連のデータを取り出し、それをpandasデータフレームに入れようとしています。ここでは、データがどのように見えるかです:パンダDataFrameでデータを読み取ることができません

1.000000 03/27/2016 13:29:26.098 1431.778943 0.092089 
1.000000 03/27/2016 13:29:26.298 1432.410517 0.078570 
1.000000 03/27/2016 13:29:26.498 1431.905258 0.089538 
1.000000 03/27/2016 13:29:26.698 1431.399999 0.080930 
5.000000 03/28/2016 00:00:00.098 1289.422164 0.392945 
25.000000 03/28/2016 00:00:00.298 1289.295849 0.145016 
25.000000 03/28/2016 00:00:00.498 1289.295849 0.183149 
25.000000 03/28/2016 00:00:00.698 1288.790590 0.175114 
26.000000 03/28/2016 00:25:16.698 1302.053644 0.162170 
..... 

5列が設定されているが、どこかのデータセット200,000 800,000ラインの間に通常存在します。ここで

は私のコードです:

import pandas as pd 
import tkinter as tk 
from tkinter import filedialog 

root = tk.Tk() 
root.withdraw() 
file_path = filedialog.askopenfilename() #User selects file 

file = pd.read_table(file_path, index_col=False) 
df = pd.DataFrame(data=file, columns=['Measurement', 'Date', 'Time','CO2', 'Flow'], dtype=object) 

print(file_path) 
print(file) 
print(df) 

プリント(FILE_PATH)正しいパスを出力し、印刷(ファイル)は、正しいデータの全てを示しており、プリント(DF)はこのことを示しています

Measurement Date Time CO2 Flow 
0   NaN NaN NaN NaN NaN 
1   NaN NaN NaN NaN NaN 
2   NaN NaN NaN NaN NaN 
3   NaN NaN NaN NaN NaN 
4   NaN NaN NaN NaN NaN 
5   NaN NaN NaN NaN NaN 
6   NaN NaN NaN NaN NaN 
7   NaN NaN NaN NaN NaN 
8   NaN NaN NaN NaN NaN 
....... 

前と全く同じことをしていましたが、私が作業していたスクリプトを失い、やり直す必要がありました。以前は完全に機能しましたが、何が起こったのか分かりません。私はそれを修正するためにいくつかのことを試してみました:

  1. 変更指数=、DTYPE =、およびpd.DataFrame
  2. の他のプロパティをpd.io.parsers.read_tableするpd.read_table変更ファイルにコンバート大幅
  3. すべてのデータポイント
ためにはNaNを持っていたが、それでも、単一の列と印刷とpd.Seriesを作成したファイルを短縮.CSVし、使用済みのpd.read_csv
  • へ0

    私は簡単にランダムなデータセットを生成して問題なくpd.DataFrameにすることができます(私はdf2 = DataFrame(np.random.randn(10,5)columns = ['a'、 'b' 'c'、 'd'、 'e'])ipythonでは正しく表示されます。

    私は同じデータを持つ数値の小さい配列を作成し、うまくいきました。私はパンダを使用したいのですが、長期的には分析が簡単になると思うからです。私は本当にそれが私が行方不明の小さな何かを願っていますが、私は何かを試してみたいので、これをしばらくの間作業してきました。

  • +1

    は、私はあなたが 'DF = pd.DataFrame省略することができると思います(データ=ファイル、列= [ '測定'、 '日付'、 '時間'、 'C​​O2を'、 '流れ']、DTYPE =オブジェクト) '、' file'は 'DataFrame'です。 – jezrael

    +0

    DataFrameコンストラクタに渡したときに古いdfを効果的に再インデクシングしています.np配列を渡すと、それはうまく動作します: 'pd.DataFrame(data = file。あなたのファイルに列名がない場合は、通常、希望する名前をパラメータとして渡すこともできます(例: '' '' '' '' '' '' '' '' '' '' '' '' '' ' 'read_table'には通用しますが、通常はヘッダーは' header = None'でないことを伝えなければなりません – EdChum

    答えて

    1

    read_tableのドキュメントを参照すると、既にDataFrameがファイルに入っています。あなたが希望する結果を得ていなかっただから、なぜ

    In [71]: f = pd.read_table('table.txt', names=['Measurement', 'Date', 'Time','CO2', 'Flow']) 
    
    In [72]: f 
    Out[72]: 
        Measurement  Date   Time   CO2  Flow 
    0   1 03/27/2016 13:29:26.098 1431.778943 0.092089 
    1   1 03/27/2016 13:29:26.298 1432.410517 0.078570 
    2   1 03/27/2016 13:29:26.498 1431.905258 0.089538 
    3   1 03/27/2016 13:29:26.698 1431.399999 0.080930 
    4   5 03/28/2016 00:00:00.098 1289.422164 0.392945 
    5   25 03/28/2016 00:00:00.298 1289.295849 0.145016 
    6   25 03/28/2016 00:00:00.498 1289.295849 0.183149 
    7   25 03/28/2016 00:00:00.698 1288.790590 0.175114 
    8   26 03/28/2016 00:25:16.698 1302.053644 0.162170 
    

    はこれを試してみてください? テーブルが読み込まれた後、必要な列名がないことに注意してください。既存のデータフレームとし、列名とデータフレームのコンストラクタを呼び出すときに、名前が入力されたデータフレームに与えることにより、何の列が存在しないため

    In [77]: file = pd.read_table('table.txt', index_col=False) 
    
    In [78]: file 
    Out[78]: 
        1.000000 03/27/2016 13:29:26.098 1431.778943 0.092089 
    0   1 03/27/2016 13:29:26.298 1432.410517 0.078570 
    1   1 03/27/2016 13:29:26.498 1431.905258 0.089538 
    2   1 03/27/2016 13:29:26.698 1431.399999 0.080930 
    3   5 03/28/2016 00:00:00.098 1289.422164 0.392945 
    4  25 03/28/2016 00:00:00.298 1289.295849 0.145016 
    5  25 03/28/2016 00:00:00.498 1289.295849 0.183149 
    6  25 03/28/2016 00:00:00.698 1288.790590 0.175114 
    7  26 03/28/2016 00:25:16.698 1302.053644 0.162170 
    

    はそのため、あなたはすべてのnull値を取得します。

    In [80]: df = pd.DataFrame(data=file, columns=['Measurement', 'Date', 'Time','CO2', 'Flow'], dtype=object) 
    
    In [81]: df 
    Out[81]: 
        Measurement Date Time CO2 Flow 
    0   NaN NaN NaN NaN NaN 
    1   NaN NaN NaN NaN NaN 
    2   NaN NaN NaN NaN NaN 
    3   NaN NaN NaN NaN NaN 
    4   NaN NaN NaN NaN NaN 
    5   NaN NaN NaN NaN NaN 
    6   NaN NaN NaN NaN NaN 
    7   NaN NaN NaN NaN NaN 
    
    +0

    あなたの投稿はパンダの学習に大きく貢献しました!あなたに感謝する! – Abbas

    +0

    ありがとう!私はドキュメントを読んでいましたが、 "一般的な区切りのファイル** _ _ _ ** DataFrameへ"を読んでいます。私はまだ読んだファイルをデータフレームに入れる必要があると思いました。それもそれを説明する素晴らしい方法でした、ありがとう! – zdh0012