这是一个预测程序,我在文件之间移动(已标记为1-100;文件1是2010年4月,文件100是2018年8月)。我的代码的开始部分告诉程序寻找某些标有日期的标头。该范围指定了我要查看的月份。在此范围内,有一个指定的数字,在代码末尾,我对它们进行了总计,并对预测的准确性进行平均,然后将其绘制在图表上(以显示我对未来1个月的预测的准确性)。很好,我还想绘制有助于得出该平均值的数字。我想将它们分散在平均点以上和以下,并显示为分布。我的麻烦是我不知道如何提取这些特定的数字,而只能计算所有数字的总数(然后将它们除以有多少个数字。完整的程序显示了12个月的准确性,我只显示了简化的头几个月。
import csv
import pandas as pd
import matplotlib.pyplot as plt
def getfileheader(filenumber):
month = 'Jan'
if filenumber % 12 == 0:
month = 'Jan'
if filenumber % 12 == 1:
month = 'Feb'
if filenumber % 12 == 2:
month = 'Mar'
if filenumber % 12 == 3:
month = 'Apr'
if filenumber % 12 == 4:
month = 'May'
if filenumber % 12 == 5:
month = 'Jun'
if filenumber % 12 == 6:
month = 'Jul'
if filenumber % 12 == 7:
month = 'Aug'
if filenumber % 12 == 8:
month = 'Sep'
if filenumber % 12 == 9:
month = 'Oct'
if filenumber % 12 == 10:
month = 'Nov'
if filenumber % 12 == 11:
month = 'Dec'
year = filenumber//12 + 14
return str(month)+'-'+str(year)+'\nQty'
def onemonthaccuracy(basefilenumber):
basefileread = pd.read_csv(str(basefilenumber)+'.csv', encoding='latin-1')
baseheader = getfileheader(basefilenumber)
basefilevalue = basefileread.loc[basefileread['Customer'].str.contains('Lam DepT', na=False), baseheader]
onemonthread = pd.read_csv(str(basefilenumber-1)+'.csv', encoding='latin-1')
onemonthheader = getfileheader(basefilenumber+1)
onemonthvalue = onemonthread.loc[onemonthread['Customer'].str.contains('Lam DepT', na=False), baseheader]
onetotal = int(onemonthvalue)/int(basefilevalue)
return onetotal
onetotal = 0
for i in range(12,20):
onetotal += onemonthaccuracy(i)
x = [1]
y = [onetotal]
z=[1]
w=[onetotal??] # i put a question mark as I do not know what to put here
plt.scatter(x,y)
plt.show()
以下是csv文件的外观(我取出了值):每个预测文件(例如1月16日)显示了该部门以及接下来的12个月部门中生产的单位数量。