форматировать график данных, используя Pandas указатель даты - PullRequest
0 голосов
/ 01 февраля 2020

Я хочу построить график pandas данных с именем vslr (414 строк, 2 столбца, но график, который я получаю, непригоден для использования.

Команда, которую я использую для построения графика:

plt.plot(vslr['Price'],vslr['Date'])

График: enter image description here

Мои данные:

print(vslr.head)
                 Date   Price
0    2020-01-31 15:30:00  8.1653
1    2020-01-31 14:30:00  8.2087
2    2020-01-31 13:30:00  8.1753
3    2020-01-31 12:30:00  8.1551
4    2020-01-31 11:30:00  8.0903
..                   ...     ...
409  2019-11-05 13:30:00  6.8452
410  2019-11-05 12:30:00  6.8050
411  2019-11-05 11:30:00  6.7600
412  2019-11-05 10:30:00  6.7553
413  2019-11-05 09:30:00  6.6502

vslr.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 414 entries, 0 to 413
Data columns (total 2 columns):
Date     414 non-null object
Price    414 non-null object
dtypes: object(2)
memory usage: 6.6+ KB

Помощь приветствуется:)

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

IIU C, вы получаете «бесполезный» график из-за оси, которую вы выбрали для построения графика «Дата», обычно вы будете строить график «Дата» на x-axis и цены на y-axis, а затем проверять свой график. В Matplotlib.plot () первый аргумент отображается на оси x, а второй аргумент - на оси y

Вам может потребоваться отсортировать ваш фрейм данных по дате, а также в порядке возрастания для это использование:

vslr.sort_values(by='Date', ascending=True, inplace=True)
plt.plot(vslr['Date'],vslr['Price'])

Обратите внимание, поскольку это столбец времени DateTime, отсутствующие даты также получат свои отметки. Похоже, вашей главной целью является построение графика зависимости цены от даты, чтобы вы могли извлечь их из столбцов Date.

vslr['Date']=pd.to_datetime(vslr['Date'])
vslr['Date']=vslr['date'].dt.date

Если вы установите индекс datetime, то matplotlib будет обрабатывать ось x для вас. Вот пример

import pandas as pd
import matplotlib.pyplot as plt

date_time = ["2011-09-01", "2011-08-01", "2011-07-01", "2011-06-01", "2011-05-01"]
date_time = pd.to_datetime(date_time)
temp = [2, 4, 6, 4, 6]

DF = pd.DataFrame()
DF['temp'] = temp
DF = DF.set_index(date_time)

fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.3)
plt.xticks(rotation=90)
plt.plot(DF)

Установка индекса df для серии datetime позволяет matplotlib работать с x-axis на данных временных рядов, также посмотрите на эту ссылку для обработки расстояния по оси х.

0 голосов
/ 01 февраля 2020

Как я вижу, вы имеете дело с данными временных рядов, если вы просто хотите построить их без какой-либо предварительной обработки (погружение в месяцы, может быть, в год), следуйте этой статье здесь .

но давайте предположим, что вы хотите разделить ваш набор данных на сегменты, вы можете сделать следующее, используя дату properties , а затем нанести его на эту ось.

 vslr['date']=pd.to_datetime(vslr['date'])
 vslr['month']=vslr['date'].dt.month
 vslr.groupby('month').aggregate({'Price':'sum'}).reset_index()
...