import csv

f = open('temp_ice.csv')
data = csv.reader(f)
header = next(data)
temp = []
ice = []


for row in data :
    temp.append(float(row[1]))
    ice.append(int(row[4]))

#print(temp)
#print(ice)

#print(min(temp), max(temp))

#평균 기온 값을 기준으로 도수 분포 구간 설정
import numpy as np   #numpy 불러오기

bins = np.arange(min(temp),max(temp)+5,5) #여기서 +5 개념 설명하고 가기
#print(bins)

hist, bins = np.histogram(temp, bins)
#print(hist)
#print(bins)


#온도를 기준으로 아이스크림 쇼핑 클릭 값 구분하여 저장하기 
ice_buy = np.zeros(7) #[0, 0, 0, 0, 0, 0, 0] #아이스크림 쇼핑 클릭 값의 합

#print(ice_buy)
#print(type(ice_buy))
#print(type(ice_buy[1]))
'''
for i in range(0,len(temp)) :   #평균 기온 데이터 전체 탐색
    if bins[0] <= temp[i] and temp[i] < bins[1] :  #첫 번째 계급에 해당한다면
        ice_buy[0] = ice_buy[0] + ice[i]   #첫 번째 배열 값에 해당 날짜 아이스크림 클릭 수 저장
        
    elif bins[1] <= temp[i] and temp[i] < bins[2] :
        ice_buy[1] = ice_buy[1] + ice[i]
        
    elif bins[2] <= temp[i] and temp[i] < bins[3] :
        ice_buy[2] = ice_buy[2] + ice[i]

    elif bins[3] <= temp[i] and temp[i] < bins[4] :
        ice_buy[3] = ice_buy[3] + ice[i]
        
    elif bins[4] <= temp[i] and temp[i] < bins[5] :
        ice_buy[4] = ice_buy[4] + ice[i]
        
    elif bins[5] <= temp[i] and temp[i] < bins[6] :
        ice_buy[5] = ice_buy[5] + ice[i]
        
    else:
        ice_buy[6] = ice_buy[6] + ice[i]
                
print(ice_buy)


'''

#위의 if-elif-else 구문을 줄인 버전
for i in range(0, len(temp)) :
    for j in range(0, len(bins)) :
        if j == len(bins):
            ice_buy[j] = ice_buy[j] + ice[i]            
        else :
            if bins[j] <= temp[i] and temp[i] < bins[j+1] :
                ice_buy[j] = ice_buy[j] + ice[i]
                
#print(ice_buy)

ice_buy_a = np.zeros(7) #[0,0,0,0,0,0,0] #아이스크림 쇼핑 클릭 값의 평균
for i in range(0,len(ice_buy)) :
    ice_buy_a[i] = ice_buy[i] / hist[i] #ice_buy_count[i]

#print(ice_buy_a)
#print('%0.2f'%ice_buy_a[0],'%0.2f'%ice_buy_a[1],'%0.2f'%ice_buy_a[2],'%0.2f'%ice_buy_a[3],'%0.2f'%ice_buy_a[4],'%0.2f'%ice_buy_a[5],'%0.2f'%ice_buy_a[6])  #아이스크림 쇼핑 클릭 값의 평균 출력

for i in range(0,len(ice_buy)):
    print('%0.2f'%ice_buy_a[i])



import matplotlib.pyplot as plt

#막대 그래프
plt.bar(bins[0:7], ice_buy_a, width=2, align='edge')
plt.xlabel('Average temperature')
plt.ylabel('Number of ice cream shopping')
plt.xticks(bins[0:7])
plt.show()


#분산형 그래프
plt.scatter(temp, ice)
plt.show()
'''
#분산형 그래프
plt.scatter(bins[0:7], ice_buy_a)
plt.grid()
plt.show()


#분산형 그래프 색깔 다르게 입히는 방법(번외)
C = np.random.randint(min(temp), max(temp), 7) #max(temp)는 color_num, 7은 sample_size에 해당
plt.scatter(bins[0:7], ice_buy_a, c=C, cmap=plt.cm.rainbow) #cmap에는 rainbow, Blues, autumn, RdYlGn 등 존재
plt.colorbar()
plt.grid()
plt.show()



#평균 기온 데이터와 아이스크림(빙수) 판매량 데이터를 꺾은선 그래프로 표현해보기
plt.plot(temp)
plt.plot(ice)
plt.show()


#평균기온과 아이스크림(빙수) 판매량 데이터를 분산형 그래프로 표현해보기
plt.scatter(temp, ice)
plt.show()
'''
