2017-12-28 16 views
1

xlsxファイルからPandasに読み込まれたデータをプロットしようとしています。いくつかのマイナーなフォーマットとデータ品質チェックの後、私はmatplotlibのを使用して描画します。ただし、次のエラーを取得しよう:ExcelファイルとDataFrameエラーをプロットする数値データがありません

TypeError: Empty 'DataFrame': no numeric data to plot 

これは新しい問題ではないと、私はこの非常に問題に対処するこのサイトのページの多くは続いています。投稿された提案は、残念ながら、私のために働いていません。

マイデータ・セットがその起因グラフィカルにゼロに変換できない文字列(サンプリング部位および最初の列に制限の場所)、(Iはpd.to_datetimeを使用して正しい形式に変換した)日付、多くのNaNエントリを(含みます分析)、およびさまざまな分析パラメータを表す列見出しです。

私はこのサイト上で読むの提案のいくつかのあたりに、私は私に次のエラーValueError: could not convert string to float: 'Site 1'を与える次のコード

  1. df = df.astype(float)(サイト1は、サンプリング位置である)

  2. を試してきたようにdf = df.apply(pd.to_numeric, errors='ignore')これは私に次のようになります:dtypes: float64(13), int64(1), object(65)したがって、ほとんどのデータがオブジェクトとして残っているので、動作していないように見えます。日付エントリはInt64型であり、データ列の一部がのfloat64である理由を私は理解できないと、この操作はNaNと全体のデータフレームを埋める可能性があるため、全体のデータフレームを削除します

  3. df = df.apply(pd.to_numeric, errors='coerce')をオブジェクトとして一部が残っていますか?

私は固執しており、任意の洞察に感謝します。

EDIT

私はフィードバックの一部に基づいて、自分の質問を解決することができました。データサンプルなしに答えること

df = "path" 

header = [0] # keep column headings as first row of original data 
skip = [1]  # skip second row, which has units of measure 
na_val = ['.','-.','-+0.01'] # Convert spurious decimal points that have 
           # no number associated with them to NaN 
convert = {col: float for col in (4,...,80)} # Convert specific rows to 
               # float from original text 
parse_col = ("A","C","E:CC") # apply to specific columns 

df = pd.read_excel(df, header = header, skiprows = skip, 
na_values = na_val, converters = convert, parse_columns = parse_col) 

答えて

1

はハード、しかし、あなたは数値列が100%の数値であることを確認している場合、これはおそらく動作します:ここでは私のために働いたものです

for c in df.columns: 
try: 
    df[c] = df[c].astype(int) 
except: 
    pass 
+0

この答えは

    - OPはアプローチ2で正しいトラックにありましたが、フレーム全体で1つの列に対してOPを適用しようとしています。それは明確にすることが重要です。 - オリジナルの質問に基づいて.astyle(float)にする必要があります - try-exceptはアプローチを実装するための非常に概略的な方法です

+0

@cop - コメントをいただければ幸いですが、不都合なことに、あなたは正しいです、私は可視化を容易にするために、データセット全体にフロート補正を適用しようとしています。あなたの提案にはどのように 'astyle(float)'を適用するべきですか? – Newstudent14

+0

Ezer Kのastype(int)の代わりにastype(float)でなければなりません。 「アスタイル」の部分は私の誤植でした。 –

関連する問題