DateとClosingPriceの2列のみのデータフレームがあります。私はdf.plot()を使用してそれらをプロットしようとしていますが、このエラーが発生し続けます:
ValueError:表示制限の最小-36785.37852は1未満であり、無効なMatplotlibの日付値です。これは、日時単位を持つ軸に日時以外の値を渡すとよく起こります
私はmatplotlibからこれに関するドキュメントを見つけましたが、それは形式が日時であることを確認する方法を示しています。ここにコードを示します。フォーマットが日時であることを確認し、プロットを試みる前に各列のデータ型を出力します。
df.Date = pd.to_datetime(df.Date)
print(df['ClosingPrice'].dtypes)
print(df['Date'].dtypes)
これらの印刷ステートメントの出力は次のとおりです。
float64 datetime64 [ns]
プロットする前にデータ型を検証しているため、問題が何であるかわかりません。また、データセットの最初の数行は次のようになります。
Date ClosingPrice 0 2013-09-10 64.7010 1 2013-09-11 61.1784 2 2013-09-12 61.8298 3 2013-09-13 60.8108 4 2013-09-16 58.8776 5 2013-09-17 59.5577 6 2013-09-18 60.7821 7 2013-09-19 61.7788
助けていただければ幸いです。
最新編集ここで終わる人が増えた後。新しい人がpythonを使用することを明確にするには、以下のコードを機能させるために、まずpandasをインポートする必要があります。
_import pandas as pd
_
最初にインデックスをDatetime列として設定してみてください。
_df.set_index('Date', inplace=True)
_
念のため、インデックスのdtypeを設定してみてください(編集:これはおそらく以前のように必要ないでしょう):
_df.index = pd.to_datetime(df.index)
_
そして、それをプロットします
_df.plot()
_
これが問題を解決するのは、DataFrameオブジェクトから.plot()
を使用すると、X軸が自動的にDataFrameのインデックスになるためです。
DataFrameにDatetimeindexと2つの他の列(たとえば_['Currency','pct_change_1']
_)があり、そのうちの1つだけ(たとえば_pct_change_1
_)をプロットしたい場合:
_# single [ ] transforms the column into series, double [[ ]] into DataFrame
df[['pct_change_1']].plot(figsize=(15,8))
_
ここで、figsize=(15,8)
はプロットのサイズを設定しています_(width, height)
_。
最終編集:
³元のインデックスを削除したくない場合は、次のこともできます。
_df[['Date','ClosingPrice']].plot('Date', figsize=(15,8))
_