- Set the
'datetime'
column to a datetime64[ns] Dtype
to resolve the error:
- Use
pandas.to_datetime
to convert the 'datetime'
column, and remember to assign the column back to itself, because this is not an inplace update.
pandas
is good at figuring out the format of datetimes, but it may be necessary to use the format=
option to specify the current format of the 'datetime'
column. See Convert Pandas Column to DateTime.
- Column names can be accessed with a
.
, if they do not contain special characters, and do not clash with built-in attributes/methods (e.g., index
, count
).
df_google.datetime
instead of df_google['datetime']
import pandas as pd
import matplotlib.pyplot as plt
# given the following data
data = {'datetime': ['2018-05-15', '2018-05-16', '2018-05-17', '2018-05-18', '2018-05-21', '2018-05-22', '2018-05-23', '2018-05-24', '2018-05-25', '2018-05-29'],
'price': [1079.22998, 1081.77002, 1078.589966, 1066.359985, 1079.579956, 1069.72998, 1079.689941, 1079.23999, 1075.660034, 1060.319946]}
df_google = pd.DataFrame(data)
# convert the datetime column to a datetime type and assign it back to the column
df_google.datetime = pd.to_datetime(df_google.datetime)
# display(df_google.head())
datetime price
0 2018-05-15 1079.229980
1 2018-05-16 1081.770020
2 2018-05-17 1078.589966
3 2018-05-18 1066.359985
4 2018-05-21 1079.579956
5 2018-05-22 1069.729980
6 2018-05-23 1079.689941
7 2018-05-24 1079.239990
8 2018-05-25 1075.660034
9 2018-05-29 1060.319946
Verify the 'datetime'
column is a datetime64[ns]
Dtype:
print(df_google.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 datetime 10 non-null datetime64[ns]
1 price 10 non-null float64
dtypes: datetime64[ns](1), float64(1)
memory usage: 288.0 bytes
Plot:
- Specify the column to be the axis with
x=...
to plot.
df_google.plot(x='datetime')
plt.show()
- The column to be the x-axis can also be set as the index with
df.set_index('datetime', inplace=True)
, and then df.plot()
to plot, but setting the index is not necessary, and is irrelevant to the error.
- There’s a substantial ecosystem of alternative plotting tools, but
df.plot()
is fine for getting a look at the data.
Note: