Excel
python
在excel中month中间有点,python会默认识别为浮点类型的值
因此将其读取为string
sales=pd.read_excel('024/Sales.xlsx',dtype={'Month':str})
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import linregress
sales=pd.read_excel('024/Sales.xlsx',dtype={'Month':str})
print(sales)
slope,intercept,r,p,std_err=linregress(sales.index,sales.Revenue)
#slope斜率,intercept截距
exp=sales.index*slope+intercept
plt.scatter(sales.index,sales.Revenue)
plt.plot(sales.index,exp,color='orange')
plt.title('Sales')
plt.xticks(sales.index,sales.Month,rotation=90)
plt.tight_layout()
plt.show()
拟合方程:
plt.title(f"y={slope}*X+{intercept}")
print(sales)
Out[4]:
Month Revenue
0 2017.01 5.219502
1 2017.02 4.075924
2 2017.03 13.240190
3 2017.04 6.928844
4 2017.05 15.120419
5 2017.06 9.608529
6 2017.07 22.746334
7 2017.08 27.489305
8 2017.09 17.510031
9 2017.10 17.220169
10 2017.11 15.156002
11 2017.12 39.025900
12 2018.01 18.739449
13 2018.02 29.785448
14 2018.03 20.607362
15 2018.04 35.445472
16 2018.05 61.789251
17 2018.06 57.701989
18 2018.07 66.667342
19 2018.08 38.202189
20 2018.09 57.062463
21 2018.10 56.046796
22 2018.11 43.465649
23 2018.12 59.056942
预测2019年12月数据,index为35
print(slope*35+intercept)
Out[3]: 88.76404338671654