Чтение CSV с датой и создание из нее линейных графиков - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть данные ниже, сохраненные как stockdata.csv.

Date,Open,High,Low,Close
03-10-16,774.25,776.065002,769.5,772.559998
04-10-16,776.030029,778.710022,772.890015,776.429993
05-10-16,779.309998,782.070007,775.650024,776.469971
06-10-16,779,780.47998,775.539978,776.859985
07-10-16,779.659973,779.659973,770.75,775.080017

У меня есть 2 вопроса:

  1. желаем создать линейный график с датой на оси x и другими 4 переменными на оси y. У меня проблема с разделением даты и данных для получения желаемого результата.

    Вот мой код:

    import pandas as pd
        df=pd.read_csv(r'C:\Users\stockdata.csv',parse_dates=True,index_col=0,header=0)
    

    Это дает мне вывод ниже:

    Empty DataFrame
    Columns: []
    Index: [03-10-16,774.25,776.065002,769.5,772.559998, 04-10-16,776.030029,778.710022,772.890015,776.429993, 05-10-16,779.309998,782.070007,775.650024,776.469971, 06-10-16,779,780.47998,775.539978,776.859985, 07-10-16,779.659973,779.659973,770.75,775.080017]
    
  2. Выполняя pd.read_csv, я видел все коды, непосредственно вводящие путь к файлу. Но если я исключу префикс r, он выдаст ошибку, как показано ниже:

    SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

    Как написать код без упоминания режима чтения?

Edit1:

Проблема была с моим пониманием .csv. Я создавал .csv и помещал туда данные, включая запятые. Я обнаружил, что .csv будет отображаться без запятых в формате Excel CSV, но запятые появляются, когда тот же файл открывается в блокноте.

Мой окончательный код:

import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv(r"C:\Users\stockdata.csv",header=0,index_col=0,parse_dates=[0])
df.plot(y=['Open','High','Low','Close']) 
plt.show()

Это обрабатывает дату в формате гггг-мм-дд и отображает 10 дат вместо ввода 5. Нужно поэкспериментировать с библиотекой datetime, чтобы исправить это.

Редактировать 2: Измененный код, чтобы получить только 5 дат, для которых у меня есть данные. Текущий код выглядит так -

import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv("stocks.csv",header=0,index_col=0)
df.index=pd.to_datetime(df.index,format="%d-%m-%y")

Создает график, как показано ниже:

линейный график

Теперь проблема заключается в том, что, как вы можете видеть на x-axis, только первая дата имеет правильный формат. Мне нужно получить все даты в правильном формате.

Кроме того, легенда по умолчанию подходит к верхнему левому углу - есть ли способ ее переместить, например к правому верхнему углу?

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