# OneRule1.py

dataFile = "weather.csv"

attributes = {"Clouds":["overcast", "cloudy", "clear"], 
              "Temperature":["cold", "mild", "hot"], 
              "Humidity":["low", "normal", "high"], 
              "Wind":["weak", "strong"]}
attributeNames = ["Clouds", "Temperature", "Humidity", "Wind"]
# targetValues: "sun", "rain", "snow"

def loadData(fileName):
    try:    
        fData = open(fileName, 'r')
    except:
        return []
    out = []
    for line in fData:
        line = line[:-1]  # remove \n
        if len(line) == 0:  # empty line
            continue
        li = [i for i in line.split(",")]
        out.append(li)
    fData.close()
    return out

X = loadData(dataFile)

attribute = "Humidity"
errorCount = 0
print "Considering attribute: '%s' now..." %(attribute)
for value in attributes[attribute]:
    print "  Statistics for attribute '%s' with value '%s':" \
          %(attribute, value)
    frequencies = {"sun":0, "rain":0, "snow":0}
    k = X[0].index(attribute) # position of attribute
    for sample in X[1:]:
        if sample[k] == value:
            if sample[4] == "sun":
                frequencies["sun"] += 1
            if sample[4] == "rain":
                frequencies["rain"] += 1
            if sample[4] == "snow":
                frequencies["snow"] += 1
    print "    Frequency (number of instances): \
            'sun': %s, 'rain':, %s, 'snow': %s" \
            %(frequencies["sun"], frequencies["rain"], frequencies["snow"])
