在函数/循环中提取值

时间:2018-08-09 21:26:50

标签: python csv matplotlib

这是一个预测程序,我在文件之间移动(已标记为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个月部门中生产的单位数量。

enter image description here

0 个答案:

没有答案