如何绘制股价图表?为什么我的结果与正确的结果如此不同
how to plot a stock price chart? Why is my result so different from the right one
这是我的代码。
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
data1 = pd.read_csv("data.csv",delimiter=",")
%matplotlib inline
plt.plot(data1["date"],data1["close"])
plt.show()
这是数据的样子。stock price data。它有 4158 行。
这是my result
这就是它应该的样子(蓝色的)。right answer
我的结果似乎丢失了太多细节。
Eli Lin,在绘制图表之前,您必须处理 data1['date']
。此列应包含 datetime
个对象,而是包含 int
个对象。
我复制了你的部分数据集,不过,我相信这已经足够了:
data1 = pd.DataFrame({'index': np.arange(0, 14).tolist(),
'code' : '000300.SH',
'date' : [20050104,20050105,20050106,20050107,20050110,20050111,20050112,20050113,20050114,20050117,20050118,20050119,20050120,20050121],
'open' : [994.796,981.577,993.331,983.045,983.760,994.189,996.651,996.078,996.617,979.111,967.374,974.333,963.213,954.462],
'close': [982.794,992.564,983.174,983.958,993.879,997.135,996.748,996.877,988.306,967.452,974.689,967.210,956.245,982.604]
})
data1
index code date open close
0 0 000300.SH 20050104 994.796 982.794
1 1 000300.SH 20050105 981.577 992.564
2 2 000300.SH 20050106 993.331 983.174
3 3 000300.SH 20050107 983.045 983.958
4 4 000300.SH 20050110 983.760 993.879
5 5 000300.SH 20050111 994.189 997.135
6 6 000300.SH 20050112 996.651 996.748
7 7 000300.SH 20050113 996.078 996.877
8 8 000300.SH 20050114 996.617 988.306
9 9 000300.SH 20050117 979.111 967.452
10 10 000300.SH 20050118 967.374 974.689
11 11 000300.SH 20050119 974.333 967.210
12 12 000300.SH 20050120 963.213 956.245
13 13 000300.SH 20050121 954.462 982.600
首先,让我们将日期更改为 datetime
:
data1['date'] = pd.to_datetime(data1['date'], format='%Y%m%d')
data1
index code date open close
0 0 000300.SH 2005-01-04 994.796 982.794
1 1 000300.SH 2005-01-05 981.577 992.564
2 2 000300.SH 2005-01-06 993.331 983.174
3 3 000300.SH 2005-01-07 983.045 983.958
4 4 000300.SH 2005-01-10 983.760 993.879
5 5 000300.SH 2005-01-11 994.189 997.135
6 6 000300.SH 2005-01-12 996.651 996.748
7 7 000300.SH 2005-01-13 996.078 996.877
8 8 000300.SH 2005-01-14 996.617 988.306
9 9 000300.SH 2005-01-17 979.111 967.452
10 10 000300.SH 2005-01-18 967.374 974.689
11 11 000300.SH 2005-01-19 974.333 967.210
12 12 000300.SH 2005-01-20 963.213 956.245
13 13 000300.SH 2005-01-21 954.462 982.604
为了绘图和添加一些样式,您可以导入一些库,但不是强制性的:
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.set_style('darkgrid')
现在你可以用这个来策划你的聊天:
data1.plot(x='date', y='close', figsize=(12,6));
这是我的代码。
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
data1 = pd.read_csv("data.csv",delimiter=",")
%matplotlib inline
plt.plot(data1["date"],data1["close"])
plt.show()
这是数据的样子。stock price data。它有 4158 行。
这是my result
这就是它应该的样子(蓝色的)。right answer
我的结果似乎丢失了太多细节。
Eli Lin,在绘制图表之前,您必须处理 data1['date']
。此列应包含 datetime
个对象,而是包含 int
个对象。
我复制了你的部分数据集,不过,我相信这已经足够了:
data1 = pd.DataFrame({'index': np.arange(0, 14).tolist(),
'code' : '000300.SH',
'date' : [20050104,20050105,20050106,20050107,20050110,20050111,20050112,20050113,20050114,20050117,20050118,20050119,20050120,20050121],
'open' : [994.796,981.577,993.331,983.045,983.760,994.189,996.651,996.078,996.617,979.111,967.374,974.333,963.213,954.462],
'close': [982.794,992.564,983.174,983.958,993.879,997.135,996.748,996.877,988.306,967.452,974.689,967.210,956.245,982.604]
})
data1
index code date open close
0 0 000300.SH 20050104 994.796 982.794
1 1 000300.SH 20050105 981.577 992.564
2 2 000300.SH 20050106 993.331 983.174
3 3 000300.SH 20050107 983.045 983.958
4 4 000300.SH 20050110 983.760 993.879
5 5 000300.SH 20050111 994.189 997.135
6 6 000300.SH 20050112 996.651 996.748
7 7 000300.SH 20050113 996.078 996.877
8 8 000300.SH 20050114 996.617 988.306
9 9 000300.SH 20050117 979.111 967.452
10 10 000300.SH 20050118 967.374 974.689
11 11 000300.SH 20050119 974.333 967.210
12 12 000300.SH 20050120 963.213 956.245
13 13 000300.SH 20050121 954.462 982.600
首先,让我们将日期更改为 datetime
:
data1['date'] = pd.to_datetime(data1['date'], format='%Y%m%d')
data1
index code date open close
0 0 000300.SH 2005-01-04 994.796 982.794
1 1 000300.SH 2005-01-05 981.577 992.564
2 2 000300.SH 2005-01-06 993.331 983.174
3 3 000300.SH 2005-01-07 983.045 983.958
4 4 000300.SH 2005-01-10 983.760 993.879
5 5 000300.SH 2005-01-11 994.189 997.135
6 6 000300.SH 2005-01-12 996.651 996.748
7 7 000300.SH 2005-01-13 996.078 996.877
8 8 000300.SH 2005-01-14 996.617 988.306
9 9 000300.SH 2005-01-17 979.111 967.452
10 10 000300.SH 2005-01-18 967.374 974.689
11 11 000300.SH 2005-01-19 974.333 967.210
12 12 000300.SH 2005-01-20 963.213 956.245
13 13 000300.SH 2005-01-21 954.462 982.604
为了绘图和添加一些样式,您可以导入一些库,但不是强制性的:
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.set_style('darkgrid')
现在你可以用这个来策划你的聊天:
data1.plot(x='date', y='close', figsize=(12,6));