import pandas as pan
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

colors_1 = sns.color_palette()
colors_2 =sns.color_palette("Set2")
colors_3 = sns.color_palette("Set3")





Bicycle_data = pan.read_csv('https://raw.githubusercontent.com/Rusty1299/HW_files/main/Fremont_Bridge_Bicycle_Counter.csv')
Copy_of_data =Bicycle_data.copy()

Bicycle_data['Date']= pan.to_datetime(Bicycle_data['Date'],format='%m/%d/%Y %I:%M:%S %p')


Bicycle_dtypes = Bicycle_data.dtypes
print(Bicycle_dtypes)


# Re-orginize the data... I didn't like the arrangement
cols = ['Date','Fremont Bridge East Sidewalk', 'Fremont Bridge West Sidewalk', 'Fremont Bridge Total']



Bicycle_data = Bicycle_data[cols].sort_values(by='Date')

Bicycle_data_DD = Bicycle_data.drop_duplicates().reset_index(drop=True)

Bicycle_data_DD= Bicycle_data_DD.dropna()


Bicycle_Time_Index = Bicycle_data_DD.set_index('Date')


Bicycle_Time_Index_W_S = Bicycle_Time_Index.drop('Fremont Bridge Total', axis = 1)


# Question 1
Bicycle_data = Bicycle_Time_Index[Bicycle_Time_Index.index.year < 2020]

a1 ,Cool_subplots = plt.subplots(2,1,figsize=(24, 13.5),dpi =80)
Column_names = ['Fremont Bridge West Sidewalk','Fremont Bridge East Sidewalk']

Cool_subplots[0].plot(Bicycle_data.index,Bicycle_data.loc[:,'Fremont Bridge West Sidewalk'])
Cool_subplots[1].plot(Bicycle_data.index,Bicycle_data.loc[:,'Fremont Bridge East Sidewalk'],color='g')


a1.legend(Column_names,bbox_to_anchor=(1.15, .85), loc="upper right")

a1.savefig('Question1_image.png',bbox_inches = "tight")





#Question 2
Weekly_Bikes_Sum = Bicycle_Time_Index_W_S.resample('w').sum()
With_Total_Data = Bicycle_data.resample('w').sum()



plt.figure(figsize=(24, 13.5),dpi =80)
plt.rcParams.update({'font.size': 22})

plt.stackplot(Weekly_Bikes_Sum.index,Weekly_Bikes_Sum.T,labels=Weekly_Bikes_Sum.columns)


plt.title('Number of Bikes per Week')
plt.xlabel("Date")
plt.ylabel('Number of Bikes')
plt.legend(bbox_to_anchor=(1, 1), loc="upper left",title='Fremont Bridge Bikers')


fig1 = plt.gcf()
fig1.savefig('Question2_image.png',bbox_inches = "tight")
plt.show()

# Question 3

Bicycle_resample_day = Bicycle_Time_Index.resample('D').sum()



Bicycle_Rolling_sum = Bicycle_resample_day.rolling(30).sum()


plt.figure(figsize=(24, 13.5),dpi =80)
plt.plot(Bicycle_Rolling_sum.index,Bicycle_Rolling_sum,label = Bicycle_Rolling_sum.columns)
plt.legend(bbox_to_anchor=(1, 1), loc="upper left",title= '50 Day Rolling Sums')

plt.title('50 Day Rolling sum of the Total Number of Bikers')
plt.xlabel("Date")
plt.ylabel('Number of Bikes')

fig2 = plt.gcf()
fig2.savefig('Question3_image.png',bbox_inches = "tight")
plt.show()


# Question 4
sorter = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']

Converting_Indexs_to_Day = Bicycle_Time_Index_W_S.set_index(Bicycle_Time_Index_W_S.index.day_name())
# Converting_Indexs_to_Day= Converting_Indexs_to_Day.sort_index(level = sorter,axis = 1)





plt.figure(figsize=(24, 13.5),dpi =80)



x_names = Converting_Indexs_to_Day.index
Y_values = Converting_Indexs_to_Day.sum(axis=1)


## Total Number of bikers 
sns.boxplot(x =x_names,y=Y_values,showfliers=False,order=sorter,palette=colors_1)

plt.title('Total Number of Bikers')
plt.xlabel("Days of the Week")
plt.ylabel('Number of Bikes')

plt.savefig('Question4_t_image.png',bbox_inches = "tight")
plt.show()



Total_groupby = Y_values.groupby([x_names]).describe()

Total_groupby = Total_groupby.reindex(sorter)



## West Side graph

West_side_values = Converting_Indexs_to_Day['Fremont Bridge West Sidewalk']


plt.figure(figsize=(24, 13.5),dpi =80)
sns.boxplot(x =x_names,y=West_side_values,showfliers=False,order=sorter,palette=colors_2)

plt.title('Number of Bikers on the  Fremont Bridge West Sidewalk')
plt.xlabel("Days of the Week")
plt.ylabel('Number of Bikes')

plt.savefig('Question4_5_image.png',bbox_inches = "tight")
plt.show()

West_groupby = West_side_values.groupby([x_names]).describe()

West_groupby = West_groupby.reindex(sorter)


## East Side graph
East_side_values = Converting_Indexs_to_Day['Fremont Bridge East Sidewalk']

plt.figure(figsize=(24, 13.5),dpi =80)
sns.boxplot(x =x_names,y=East_side_values,showfliers=False,order=sorter,palette=colors_3)

plt.title('Number of Bikers on the Fremont Bridge East Sidewalk')
plt.xlabel("Days of the Week")
plt.ylabel('Number of Bikes')
plt.show()

East_groupby = East_side_values.groupby([East_side_values.index]).describe()

East_groupby = East_groupby.reindex(sorter)

print('\n Total Group by\n',Total_groupby)
print('\n West Group by\n',West_groupby)
print('\n East Group by\n',East_groupby)


# Question 5
Converting_to_day =Bicycle_data_DD.copy()
Converting_to_day['Date'] = Bicycle_data_DD.Date.dt.weekday

Converting_to_day['Date']  = Converting_to_day['Date'].where((Converting_to_day['Date']>=5)&(Converting_to_day['Date']<=6),'Weekday')

Converting_to_day['Date']  =Converting_to_day['Date'].where(Converting_to_day['Date']=='Weekday','Weekend')

# Total bikes on both sidewalks

plt.figure(figsize=(24, 13.5),dpi =80)
sns.boxplot(x =Converting_to_day['Date'],y=Converting_to_day['Fremont Bridge Total'],showfliers=False,palette=colors_1)
plt.title('Total Number of Bikes on Fremont Bridge')
plt.ylabel('Number of Bikes')


plt.savefig('Question5_T_image.png',bbox_inches = "tight")
plt.show()

# East Sidewalk

plt.figure(figsize=(24, 13.5),dpi =80)
sns.boxplot(x =Converting_to_day['Date'],y=Converting_to_day['Fremont Bridge East Sidewalk'],showfliers=False,palette=colors_2)
plt.title('Total Number of Bikes on the Fremont Bridge East Sidewalk')
plt.ylabel('Number of Bikes')

plt.savefig('Question5_E_image.png',bbox_inches = "tight")
plt.show()

# west Sidewalk

plt.figure(figsize=(24, 13.5),dpi =80)
sns.boxplot(x =Converting_to_day['Date'],y=Converting_to_day['Fremont Bridge West Sidewalk'],showfliers=False,palette=colors_3)
plt.title('Total Number of Bikes on the Fremont Bridge West Sidewalk')
plt.ylabel('Number of Bikes')

plt.savefig('Question5_w_image.png',bbox_inches = "tight")
plt.show()








Mean_pivot_table = Converting_to_day.pivot_table(index = 'Date')



## Question 5