Vorhersage der Essenslieferzeit. Optimierung der Lebensmittellieferung: Daten… | von Saloni Jhalani | Juni 2023

0
25


Nachdem wir nun ein grundlegendes Verständnis des Datensatzes haben, fahren wir mit der Datenbereinigung fort. Die Datenbereinigung ist ein entscheidender Prozess, der die Identifizierung und Behebung von Fehlern, Inkonsistenzen und fehlenden Werten innerhalb eines Datensatzes umfasst.

In diesem Schritt konzentrieren wir uns auf das Formatieren von Spaltennamen, das Anpassen von Spaltenwerten, das Aktualisieren von Datentypen, das Löschen unnötiger Spalten, den Umgang mit fehlenden Werten und die Prüfung auf doppelte Daten. Durch die Berücksichtigung dieser Aspekte können wir die Gesamtqualität und Zuverlässigkeit des Datensatzes verbessern.

Spaltennamen formatieren

Beginnen wir mit der Formatierung der Spaltennamen, da dies die Klarheit und Lesbarkeit der Daten verbessert.

#Change identify Weatherconditions to Weather_conditions
df_train.rename(columns={'Weatherconditions': 'Weather_conditions'},inplace=True)

Datenextraktion

Als nächstes werden wir mit dem Extrahieren von Werten aus bestimmten Options fortfahren. Dieser Schritt ermöglicht es uns, spezifische und relevante Informationen aus dem Datensatz abzurufen, die mit unseren Analyse- und Modellierungszielen übereinstimmen.

Indem wir beispielsweise den Namen der Stadt aus der Spalte „Delivery_person_ID“ extrahieren, können wir eine wertvolle Variable erhalten, die uns bei der Entwicklung unseres Modells hilft. Darüber hinaus kann Klarheit erreicht werden, indem die „Bedingungen“ aus der Spalte „Weather_conditions“ und das „(min)“ aus der Spalte „Time_taken“ entfernt werden. Diese Anpassungen werden die Gesamtklarheit und das Verständnis der Daten verbessern.

def extract_column_value(df):
#Extract time and convert to int
df['Time_taken(min)'] = df['Time_taken(min)'].apply(lambda x: int(x.break up(' ')[1].strip()))
#Extract Climate circumstances
df['Weather_conditions'] = df['Weather_conditions'].apply(lambda x: x.break up(' ')[1].strip())
#Extract metropolis code from Supply particular person ID
df['City_code']=df['Delivery_person_ID'].str.break up("RES", develop=True)[0]

extract_column_value(df_train)
df_train[['Time_taken(min)','Weather_conditions','City_code']].head()

Datentypen aktualisieren

Als Nächstes aktualisieren wir die Datentypen der Options auf die am besten geeigneten Formate.

#Replace datatypes
def update_datatype(df):
#Replace datatype from object to drift
df['Delivery_person_Age'] = df['Delivery_person_Age'].astype('float64')
df['Delivery_person_Ratings'] = df['Delivery_person_Ratings'].astype('float64')
df['multiple_deliveries'] = df['multiple_deliveries'].astype('float64')
#Replace datatype from object to datetime
df['Order_Date']=pd.to_datetime(df['Order_Date'],format="%d-%m-%Y")

update_datatype(df_train)

Spalten löschen

Wir können beseitigen AUSWEIS Und Delivery_person_ID Spalten Spalten, da sie ausschließlich als eindeutige Kennungen dienen und keine wertvollen Informationen für unsere Analyse- oder Modellbildungszwecke liefern. Das Entfernen dieser Spalten trägt dazu bei, die Daten zu optimieren und die Klarheit und Effizienz unserer Analyse zu verbessern.

df_train.drop(['ID','Delivery_person_ID'],axis=1,inplace=True)

Suchen Sie nach doppelten Werten

Überprüfen wir den Datensatz auf doppelte Werte, um die Datengenauigkeit sicherzustellen und Verzerrungen zu vermeiden. Wenn Duplikate gefunden werden, müssen wir diese entfernen, um die Integrität der Daten zu wahren.

#Test for Duplicate Values
if (len(df_train[df_train.duplicated()])>0):
print("There are Duplicate values current")
else:
print("There isn't any duplicate worth current")

Da keine doppelten Werte vorhanden sind, können wir mit dem nächsten Schritt fortfahren und die fehlenden Werte im Datensatz beheben.

Behandeln Sie fehlende Werte

Der Umgang mit fehlenden Werten ist entscheidend für die Wahrung der Datenintegrität, die Gewährleistung genauer Analysen und die Vermeidung voreingenommener Ergebnisse oder unvollständiger Erkenntnisse. Im Rahmen dieses Prozesses werden wir konvertieren NaN Saiten zu np.nan Anschließend berechnen und drucken Sie die Anzahl der fehlenden Werte für jedes Function.

#Change NaN to np.nan
df_train.change('NaN', float(np.nan), regex=True,inplace=True)
#Present depend of NaN values in knowledge
df_train.isnull().sum().sort_values(ascending=False)

Angesichts des Vorhandenseins von NaN-Werten in mehreren Spalten wäre die Visualisierung dieser Spalten hilfreich, um Muster zu identifizieren und den optimalen Ansatz für den Umgang mit Nullwerten für jedes Function zu bestimmen.

#Information Visualisation
cols = ['Delivery_person_Age','Delivery_person_Ratings','Weather_conditions','Road_traffic_density','multiple_deliveries','Festival','City']
num_plots = len(cols)
num_rows = (num_plots // 2) + (num_plots % 2)

fig, axes = plt.subplots(num_rows, 2, figsize=(20,15))

for i, column_name in enumerate(cols):
row = i // 2
col = i % 2

ax = axes[row, col]
sns.countplot(knowledge=df_train, x=column_name, order=df_train[column_name].value_counts().sort_index().index, ax=ax)

ax.set_xlabel(column_name)
ax.set_ylabel('No. of Orders')
ax.set_title(column_name)
ax.tick_params(axis='x', rotation=45)

if num_plots % 2 != 0:
fig.delaxes(axes[-1, -1])

plt.tight_layout()
plt.present()



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here