Как нарисовать график временных рядов по времени и стоимости с помощью Python - PullRequest
0 голосов
/ 31 марта 2019

Как нарисовать диаграмму временных рядов с помощью Python?Поскольку в наборе данных время делится на год и период (который равен месяцу как M1, M2).

Я использую matplotlib, но не знаю, как разделить время.

Коды, которые я написал для получения данных: импорт панд в виде pd из панд; импорт DataFrame data1 = pd.read_csv ('CUUR0000SA0.txt', header = None) data2 = pd.read_csv ('SUUR0000SA0.txt'), заголовок = нет) data = pd.concat ([data1, data2]) data.columns = ["a"] data = DataFrame (data) print (data.head ())

Однако выходные данныеФрейм данных имеет только один столбец.

Часть набора данных выглядит следующим образом:

+-------------+------+--------+---------+-----------+
|  series id  | year | period |  value  | footnotes |
+-------------+------+--------+---------+-----------+
| CUUR0000SA0 | 2014 |  M12   | 234.812 |           |
| CUUR0000SA0 | 2014 |  M11   | 236.151 |           |
| CUUR0000SA0 | 2014 |  M10   | 237.433 |           |
| CUUR0000SA0 | 2014 |  M09   | 238.031 |           |
| CUUR0000SA0 | 2014 |  M08   | 237.852 |           |

Диаграмма должна объяснять тенденцию значений с помощью графика в соответствии с периодами времени.Но я не знаю, как сначала перевести его в нужный формат.

1 Ответ

0 голосов
/ 31 марта 2019

Вот шаги для получения решения:

  1. преобразование значений периода в числа
  2. добавление столбца, в котором значения являются комбинацией года и периода
  3. построить временной ряд

И это код:

import pandas as pd
from datetime import datetime

df = {0: {"series id":"CUUR0000SA0", "year":2014, "period":"M12", "value":234.812},
        1: {"series id":"CUUR0000SA0", "year":2014, "period":"M11", "value":236.151},
       2: {"series id":"CUUR0000SA0", "year":2014, "period":"M10", "value":237.433},
       3: {"series id":"CUUR0000SA0", "year":2014, "period":"M09", "value":238.031},
       4: {"series id":"CUUR0000SA0", "year":2014, "period":"M08", "value":237.852},
       }

d = {'M01':1,
     'M02':2,
     'M02':3,
     'M04':4,
     'M05':5,
     'M06':6,
     'M07':7,
     'M08':8,
     'M09':9,
    'M10':10,
    'M11':11,
    'M12':12,}

df = pd.DataFrame.from_dict(df, orient="index")
df.period = df.period.map(d)

df['date'] = pd.to_datetime(df.year.astype(str) + '/' + df.period.astype(str) + '/01')

df.plot(x='date', y='value')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...