правильно отображает datetime64 [ns] на графике - PullRequest
1 голос
/ 12 апреля 2020

Здесь можно столкнуться с проблемой. См. Снимок данных ниже:

Даты:

NKE   2019-02-28
NKE   2019-05-31
NKE   2019-08-31
NKE   2019-11-30
NKE   2020-02-29 
Name: asOfDate, dtype: datetime64[ns] symbol

Значения:

 NKE   852000000.00 
 NKE   1737000000.00
 NKE   2023000000.00
 NKE   674000000.00 
 NKE   2165500000.00
Name: FreeCashFlow, dtype: float64 symbol

В основном, если бы я нанес график дат и значений в гистограмму. Значение не соответствует c с датами. Я ломал голову, пытаясь понять это за последние два часа. Любая помощь будет оценена.

Например: enter image description here

См. Код ниже:

import matplotlib
from yahooquery import Ticker
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters

fig, ax = plt.subplots()

Tickers = Ticker('NKE')

cashFlowData = Tickers.cash_flow(frequency='q')

 ax.set_title('Cash Flow Chart')
 ax.set_xlabel('Years')
 ax.set_ylabel('Cash Amount')


 register_matplotlib_converters()

 plt.bar(cashFlowData["asOfDate"],cashFlowData["FreeCashFlow"])
 ax.get_yaxis().set_major_formatter(matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))
 plt.show()

1 Ответ

1 голос
/ 12 апреля 2020

Ваш вопрос неясен, поэтому сложно точно определить, что вы ищете, но если вы пытаетесь просто показать дни с целью отображения графика, то вы можете добавить следующую строку кода:

cashFlowData['asOfDate']=cashFlowData['asOfDate'].astype(str)

Полный код:

import matplotlib
from yahooquery import Ticker
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters

fig, ax = plt.subplots()

Tickers = Ticker('NKE')

cashFlowData = Tickers.cash_flow(frequency='q')
# cashFlowData = cashFlowData[['asOfDate', 'FreeCashFlow']]
cashFlowData['asOfDate']=cashFlowData['asOfDate'].astype(str)

ax.set_title('Cash Flow Chart')
ax.set_xlabel('Years')
ax.set_ylabel('Cash Amount')


register_matplotlib_converters()

plt.bar(cashFlowData["asOfDate"],cashFlowData["FreeCashFlow"])
ax.get_yaxis().set_major_formatter(matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))
plt.show()

By Day for relevant days

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...