Как я могу построить это data с помощью панды и включить date для каждого значения?

p1d = {
  "times": "2021-05-15/P1D",
  "start": "2021-05-16T00:00:00",
  "end": "2021-05-21T00:00:00",
  "data": [
    [1, 1.2141],
    [2, 1.2152],
    [3, 1.2225],
    [4, 1.2177],
    [5, 1.223],
    [6, 1.218]
  ],
  "type": "time"
}

Можно использовать этот график:

df_p1d = pd.DataFrame(p1d['data'], columns=["date", "value"])
df_p1d.plot(x="date", y="value")

Но в нем нет таких дат, как:

2021-05-16T00:00:00
2021-05-17T00:00:00
2021-05-18T00:00:00
2021-05-19T00:00:00
2021-05-20T00:00:00
2021-05-21T00:00:00

enter image description here

1
lakk 23 Май 2021 в 22:45

2 ответа

Лучший ответ
import matplotlib.dates as mdates

df_p1d = pd.DataFrame(p1d['data'], columns=["date", "value"])
df_p1d["date2"] = pd.date_range(p1d["start"], p1d["end"], periods=len(p1d["data"]))
ax = df_p1d.plot(x="date2", y="value")

ax.xaxis.set_major_locator(mdates.DayLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))

Change major formatter

0
Corralien 23 Май 2021 в 23:04

Пытаться:

import pandas as pd
from datetime import timedelta

p1d = {
  "times": "2021-05-15/P1D",
  "start": "2021-05-16T00:00:00",
  "end": "2021-05-21T00:00:00",
  "data": [
    [1, 1.2141],
    [2, 1.2152],
    [3, 1.2225],
    [4, 1.2177],
    [5, 1.223],
    [6, 1.218]
  ],
  "type": "time"
}

df_p1d = pd.DataFrame(p1d['data'], columns=["date", "value"])
df_p1d["X_DATE"] = pd.to_datetime(p1d['start'],format='%Y-%m-%dT%H:%M:%S') 

for i in range(len(df_p1d)):
    df_p1d.at[i,"X_DATE"] += timedelta(days=i)

print(df_p1d)

Выход:

   date   value     X_DATE
0     1  1.2141 2021-05-16
1     2  1.2152 2021-05-17
2     3  1.2225 2021-05-18
3     4  1.2177 2021-05-19
4     5  1.2230 2021-05-20
5     6  1.2180 2021-05-21
0
HARSH MITTAL 23 Май 2021 в 23:17