Electric taxis (e-taxis) have been increasingly deployed in metropolitan cities due to low operating cost and reduced emissions. Compared to conventional taxis, e-taxis require frequent recharging and each charge takes half an hour to several hours, which may result in unpredictable number of working taxis on the street. In current systems, E-taxi drivers usually charge their vehicles when the battery level is below a certain threshold, and then make a full charge. Although this charging strategy directly decreases the number of charges and the time to visit charging stations, our study reveals that it also significantly reduces the availability of number of taxis during busy hours with our data driven analysis. To meet dynamic passenger demand, we propose a new charging strategy: proactive partial charging (p^2 Charging), which allows an e-taxi to get partially charged before its remaining battery level is running too low. Based on this strategy, we propose a charging scheduling framework for e-taxis to meet dynamic passenger demand in spatial-temporal dimensions as much as possible while minimizing idle time to travel to charging stations and waiting time at charging stations. This work implements and evaluate our solution with large datasets that consist of (i) 7,228 regular internal combustion engine taxis and 726 e-taxis, (ii) an automatic taxi payment transaction collection system with total 62,100 records per day, (iii) charging station system, including 37 working charging stations over the city. The evaluation results show that p^2 Charging improves the ratio of unserved passengers by up to 83.2% on average and increases e-taxi utilization by up to 34.6% compared with ground truth and existing charging strategies.