读取带日期的csv并从中制作折线图

时间:2018-11-08 17:41:57

标签: python pandas csv dataframe matplotlib

我下面的数据另存为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轴为Date,y轴为其他4个变量。 我在从数据中分离日期以获得期望的结果时遇到问题。

    这是我的代码:

    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

    如何编写代码而不提及“读取”模式?

编辑1:

问题出在我对.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()

这将以yyyy-mm-dd格式处理日期,并绘制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")

它产生如下图:

line chart

现在的问题是,正如您在x-axis上看到的那样,只有第一个日期的格式正确。我需要以正确的格式获取所有日期。

此外,图例默认情况下会朝左上角移动-是否可以通过任何方式移动图例,例如朝右上角移动?

0 个答案:

没有答案