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'
を与える次のコード
df = df.astype(float)
(サイト1は、サンプリング位置である)を試してきたように
df = df.apply(pd.to_numeric, errors='ignore')
これは私に次のようになります:dtypes: float64(13), int64(1), object(65)
したがって、ほとんどのデータがオブジェクトとして残っているので、動作していないように見えます。日付エントリはInt64型であり、データ列の一部がのfloat64である理由を私は理解できないと、この操作はNaN
と全体のデータフレームを埋める可能性があるため、全体のデータフレームを削除します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)
この答えは
- OPはアプローチ2で正しいトラックにありましたが、フレーム全体で1つの列に対してOPを適用しようとしています。それは明確にすることが重要です。 - オリジナルの質問に基づいて.astyle(float)にする必要があります - try-exceptはアプローチを実装するための非常に概略的な方法です
–@cop - コメントをいただければ幸いですが、不都合なことに、あなたは正しいです、私は可視化を容易にするために、データセット全体にフロート補正を適用しようとしています。あなたの提案にはどのように 'astyle(float)'を適用するべきですか? – Newstudent14
Ezer Kのastype(int)の代わりにastype(float)でなければなりません。 「アスタイル」の部分は私の誤植でした。 –