我下面的数据另存为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个问题:
希望制作一个折线图,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]
在执行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")
它产生如下图:
现在的问题是,正如您在x-axis
上看到的那样,只有第一个日期的格式正确。我需要以正确的格式获取所有日期。
此外,图例默认情况下会朝左上角移动-是否可以通过任何方式移动图例,例如朝右上角移动?