In [70]:
%matplotlib inline

import datetime as datetime
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

trip = pd.read_csv('db/trip.csv')
weather = pd.read_csv('db/weather.csv')

#weather.sample(3)
plt.rcParams['figure.figsize'] = (16, 8)

In [71]:
# se extrae la fecha sin hora para poder unir trip y weather.
trip['date'] = trip['start_date'].str.extract(r'(\d+/\d+/\d+)',expand=False)
tw = pd.merge(trip, weather, left_on='date', right_on='date', how='inner')

In [25]:
#calcula promedio de temperatura máxima por día y cuenta la cantidad de viajes de ese día. Ordena por temeperatura. 
grouped = tw.loc[:,['date','max_temperature_f']].groupby('date').agg(['mean','count']).max_temperature_f.sort_values('mean',ascending=True)
grouped.reset_index('date')
plot = grouped.plot(x = 'mean', y = 'count', kind = 'scatter', title='Viajes dependiendo la temperatura maxima')
plot.set_ylabel('Viajes');
plot.set_xlabel('Temperatura maxima promedio');

# Cuando la temperatura mázima es menor a 60 F, se nota una clara disminución en la cantidad de viajes.
# Con temperaturas mayores, la cantidad de vaijes se mantiene.
# Disminuyen con temperaturas maximas mayores a 90 F.



In [26]:
plot = grouped.plot(x = 'mean', y = 'count', title='Viajes dependiendo la temperatura maxima')
plot.set_ylabel('Viajes');
plot.set_xlabel('Temperatura maxima promedio');



In [73]:
#calcula promedio de temperatura por día y cuenta la cantidad de viajes de ese día. Ordena por temeperatura. 
grouped = tw.loc[:,['date','mean_temperature_f']].groupby('date').agg(['mean','count']).mean_temperature_f.sort_values('mean',ascending=True)
grouped.reset_index('date')
plot = grouped.plot(x = 'mean', y = 'count', kind = 'scatter', title='Viajes dependiendo la temperatura')
plot.set_ylabel('Viajes');
plot.set_xlabel('Temperatura  promedio');



In [96]:
#Cantidad de viajes hechos por usuarios Customer vs cantidad de viajes de Subscriber
# Customer: membresías de 24hs o 3 días pagadas en las mismas estaciones.
# Subscriber: subscripciones anuales pagadas online.
sub_plot = trip.groupby('subscription_type').count()['id'].plot(kind = 'bar', figsize=(8,8))
sub_plot.set_ylabel('Viajes');
for p in sub_plot.patches:
    sub_plot.annotate(str(p.get_height()), (p.get_x(), p.get_height() * 1.025))



In [2]:
trip1 = pd.read_csv('trip.csv', parse_dates=['start_date','end_date'])

In [67]:
#Comparacion de viajes por día de la semana dependiendo el tipo de subscripcion.
fig = plt.figure();
tripc_plot = trip1.loc[trip1.subscription_type == 'Customer',['start_date']]['start_date'].apply(lambda x: datetime.datetime.strftime(x, '%A')).value_counts().plot('bar',color='blue', position = 0, width= 0.4);
trip1.loc[trip1.subscription_type == 'Subscriber',['start_date']]['start_date'].apply(lambda x: datetime.datetime.strftime(x, '%A')).value_counts().plot('bar', color='red', position = 1, width= 0.4);

tripc_plot.set_xlabel('Dias de la semana');
tripc_plot.set_ylabel('Cantidad');
tripc_plot.set_title('Cantidad de viajes por dia de la semana');



In [98]:
#cantidad de viajes según su duración. (se desestiman duraciones mayores a 2000 dado que la curva tiende a 1)
trip1.sort_values(by = 'duration')
trip2 = trip1[trip1.duration<2000].groupby('duration').agg(['count'])['id']
dur_plot = trip2.reset_index('duration').plot(x='duration', y = 'count', logx = True)
dur_plot.set_ylabel('Viajes');
dur_plot.set_xlabel('Duracion');



In [ ]: