ium_444517/data_expl.py
Kamila 85feb828bd
All checks were successful
s444517-training/pipeline/head This commit looks good
docker task 2
2022-04-03 13:49:46 +02:00

40 lines
1.4 KiB
Python

import pandas as pd
import numpy as np
data = pd.read_csv('./googleplaystore.csv')
data.dropna(subset=['Rating', 'Type','Content Rating','Current Ver','Android Ver'], inplace=True)
data.reset_index(drop=True, inplace=True)
data = data.drop(columns=["Size", "Android Ver", "Current Ver", "Last Updated"])
# normalizing text
to_lowercase = ['App', 'Category', 'Type', 'Content Rating', 'Genres']
for column in to_lowercase:
data[column] = data[column].apply(str.lower)
data["Installs"] = data["Installs"].replace({'\+': ''}, regex=True)
data["Installs"] = data["Installs"].replace({',': ''}, regex=True)
# normalizing numbers
data["Reviews"] = pd.to_numeric(data["Reviews"], errors='coerce')
max_value = data["Reviews"].max()
min_value = data["Reviews"].min()
data["Reviews"] = (data["Reviews"] - min_value) / (max_value - min_value)
data["Installs"] = pd.to_numeric(data["Installs"], errors='coerce')
max_value = data["Installs"].max()
min_value = data["Installs"].min()
data["Installs"] = (data["Installs"] - min_value) / (max_value - min_value)
#print(data)
# splitting into sets
np.random.seed(123)
train, validate, test = np.split(data.sample(frac=1, random_state=42), [int(.6*len(data)), int(.8*len(data))])
print(f"Data shape: {data.shape}\nTrain shape: {train.shape}\nTest shape: {test.shape}\nValidation shape:{validate.shape}")
train.to_csv('apps_train.csv')
test.to_csv('apps_test.csv')
validate.to_csv('apps_validate.csv')