import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
def logistic_function(t, K, a, b):
return K/(1+np.exp(a-b*t))
infect = pd.read_excel('世界新冠肺炎累计确诊.xlsx')
infected_number = infect['确诊人数']
infected_number = np.array(infected_number.values, dtype=np.float32)
day = np.arange(len(infected_number))
popt, pcov = curve_fit(logistic_function, day, infected_number)
plt.plot(logistic_function(np.arange(100), popt[0], popt[1], popt[2]))
plt.scatter(day, infected_number)
plt.xlabel("自2月15号以后的天数")
plt.ylabel(('确诊的感染人数'))
plt.show()
print(popt)