GitHub - KFoxder/CitiBike: CitiBike Statistics Data

3 min read Original article ↗

This is a project designated to analyzing the existing CitiBike data in New York on a daily basis using unix commands.

The link to the data in .csv format is located on the Citi Bike System Data website and the link on the bottom right that says "Get Data" is the link for the data in .csv format.

filename = argv[1]
print "You have entered the file :",filename

nameOfWeek = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
numOfDays = [0,0,0,0,0,0,0]
numTrips = [0,0,0,0,0,0,0]
numMiles = [0,0,0,0,0,0,0]
numSignUp = [0,0,0,0,0,0,0]
numDayPass = [0,0,0,0,0,0,0]
numWeekPass = [0,0,0,0,0,0,0]
day=0

with open(filename) as targetFile:
	for x in xrange(7): 				##Skip first 7 lines b/c sparse data
		next(targetFile)
	for line in targetFile:
		columns = line.split(",")
		if(day==7):
			day=0
		numOfDays[day]=numOfDays[day]+1
		numTrips[day]+=float(columns[1])
		numMiles[day]+=float(columns[3])
		numSignUp[day]+=float(columns[6])
		numDayPass[day]+=float(columns[7])
		numWeekPass[day]+=float(columns[8])
		day=day+1
		
	
print("Day of Week -- Total Trips -- Avg Trips -- Avg Miles -- Avg. Sign Up -- Avg. 24hr Pass -- Avg. 7day Pass")
for i in range(7):
	avgTrips = float(numTrips[i]/numOfDays[i])
	avgMiles = float(numMiles[i]/numOfDays[i])
	avgSignUp = float(numSignUp[i]/numOfDays[i])
	avgDayPass = float(numDayPass[i]/numOfDays[i])
	avgWeekPass = float(numWeekPass[i]/numOfDays[i])
	print nameOfWeek[i],",",numTrips[i],",",avgTrips,",",avgMiles,",",avgSignUp,",",avgDayPass,",",avgWeekPass
python CitiBikeParse.py data-CSXes.csv
awk '
BEGIN {
FS=",";
day=0;
nameOfWeek[0]="Monday		";
nameOfWeek[1]="Tuesday	";
nameOfWeek[2]="Wednesday	";
nameOfWeek[3]="Thursday	";
nameOfWeek[4]="Friday		";
nameOfWeek[5]="Saturday	";
nameOfWeek[6]="Sunday		";
}; 


{if(NR>7){  # skip beginning days with limited data
if(day=="7"){
day=0;
numOfDay[day]++;
numTrips[day]+=$2;
numMiles[day]+=$4;
numSignUp[day]+=$7;
numDayPass[day]+=$8;
numWeekPass[day]+=$9;
day++;
}else{
numOfDay[day]++;
numTrips[day]+=$2;
numMiles[day]+=$4;
numSignUp[day]+=$7;
numDayPass[day]+=$8;
numWeekPass[day]+=$9;
day++;
}
}};


END{
printf("Day of Week -- Total Trips -- Avg Trips -- Avg Miles -- Avg. Sign Up -- Avg. 24hr Pass -- Avg. 7day Pass\n");
for(i=0;i<7;i++){
avgTrips=numTrips[i]/numOfDay[i];
avgMiles=numMiles[i]/numOfDay[i];
avgSignUp=numSignUp[i]/numOfDay[i];
avgDayPass=numDayPass[i]/numOfDay[i];
avgWeekPass=numWeekPass[i]/numOfDay[i];
printf(nameOfWeek[i]" -- "numTrips[i]" Trips -- "avgTrips" Trips per Day -- "avgMiles" Miles per Day-- "avgSignUp" Annual Signups --"avgDayPass" Day Passes --"avgWeekPass" Week Passes\n");
}
};'  data-CSXes.csv
  Monday -- 509879 Trips -- 29992.9 Trips per Day -- 69348.4 Miles per Day-- 481.824 Annual Signups --2870.53 Day Passes --187 Week Passes  
  Tuesday -- 445093 Trips -- 26181.9 Trips per Day -- 50588.4 Miles per Day-- 588.647 Annual Signups --1321.59 Day Passes --190.824 Week Passes  
  Wednesday -- 513837 Trips -- 30225.7 Trips per Day -- 55799.7 Miles per Day-- 565.176 Annual Signups --1130.94 Day Passes --227.235 Week Passes  
  Thursday -- 522459 Trips -- 32653.7 Trips per Day -- 61113.4 Miles per Day-- 566.188 Annual Signups --1302.12 Day Passes --211.688 Week Passes  
  Friday -- 506088 Trips -- 31630.5 Trips per Day -- 58891.1 Miles per Day-- 484.562 Annual Signups --1337.12 Day Passes --196.5 Week Passes  
  Saturday -- 503489 Trips -- 31468.1 Trips per Day -- 58056.6 Miles per Day-- 423.625 Annual Signups --1406.88 Day Passes --169.125 Week Passes  
  Sunday -- 513825 Trips -- 32114.1 Trips per Day -- 69745.6 Miles per Day-- 373.812 Annual Signups --2863.81 Day Passes --199.312 Week Passes