add support for Pandas Time spans as index col (PeriodIndex)
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 18.8k
- Forks
- 2.8k
- Avg merge
- 16h 26m
- Merged PRs (30d)
- 21
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()
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Run the provided pandas and Plotly reproduction first, then trace how the PeriodIndex reaches JSON serialization and compare it with supported date and string indexes. Done means the example renders without requiring astype(str), with the PeriodIndex behavior covered by a test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- pandas, python
- Domain
- data-visualization
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100