# Pandas und Numpy importieren
import pandas as pd
pd.set_option('display.float_format', lambda x: '%.3f' % x)
import numpy as np
# Interface zum System
import os
os.chdir('D:\Data\Projects\Regression\Taxi Fare Prediction_Linear Regression')
# Datum und Zeit
import datetime as dt
from datetime import datetime
df = pd.read_csv('train_dt.csv')
df.head()
df.dtypes.sort_values()
# pickup_datetime in Format datetime umwandeln
df['pickup_datetime']= pd.to_datetime(df.pickup_datetime)
df.dtypes
df.describe()
Der miminale Preis für eine Fahrt ist negativ. Da der Mindestpreis bei 2,5 $ liegt und man sicher nie Geld vom Fahrer bekommt, werden alle fare_amount unter 2,5 entfernt.
# Nur fare_amount über 2,50 behalten, da dies der Mindesbetrg für eine Fahrt ist
df = df.loc[df.fare_amount > 2.5]
Auch bei den Längen- und Breitengraden gibt es fehlerhafte Ausreißer
# Nur Latitudes und Longitues in der Gegend behalten
df = df.loc[df['pickup_latitude'].between(40, 42)]
df = df.loc[df['pickup_longitude'].between(-75, -72)]
df = df.loc[df['dropoff_latitude'].between(40, 42)]
df = df.loc[df['dropoff_longitude'].between(-75, -72)]
Da es in fünf Millionen Fahrten nur drei mit der Anzahl der Passagiere über 10 gab, werden diese als Ausreißer entfernt.
df.loc[df.passenger_count > 10]
df = df.loc[df.passenger_count < 10]
# Fehlende Werte
missing = pd.DataFrame(df.isnull().sum()).rename(columns = {0: 'total'})
missing['percent'] = missing['total'] / len(df)*100
missing.sort_values('percent', ascending = False).head()
df.shape
# Bereinigten Datensatz speichern
#df.to_csv('train_dt_clean.csv', index= False)