-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Description
Hello,
I'd like to use the pandas PeriodIndex date format to work with and calculate things in a time series way.
The manual says that Plotly auto-sets the axis type to a date format when the corresponding data are either ISO-formatted date strings or if they're a date pandas column or datetime NumPy array. (https://plotly.com/python/time-series/)
So I guess, since a PeriodIndex isn't of the concept "date" but of the concept "Time spans", Plotl.ly isn't able to auto-set this axis type? The error I get is a TypeError: Object of type Period is not JSON serializable
I know I can solve this with converting to another format (#df.index = df.index.astype(str)), but it would be great to have a native solution inside plot.ly that can understand PeriodIndex.
Here is my example code:
import pandas as pd
import plotly.express as px
### READ IN DATA ###
d = {
'one':
pd.Series([1., 2.],
index=[
'Jan/2020', 'Feb/2020',
])
}
df = pd.DataFrame(d)
print(f'\n# this is what I get from my datasource\n')
print(df.index)
print(df)
### CONVERT DATA ###
idx = df.index
df.index = pd.to_datetime(idx, format="%b/%Y").to_period(freq='M')
print(f'\n# after conversion\n')
print(df.index)
df.index.name = 'Monat'
print(df)
df = df.sort_index()
###THIS FIXES IT, BUT :/ ###
#df.index = df.index.astype(str)
fig = px.line(df, x=df.index, y=('one'), title='Testplot')
fig.show()