<jupyter_start><jupyter_text>Explorando Animelists  Importar datos y cargar librerías<jupyter_code>from google.colab import drive
drive.mount('/content/drive')
# Libraries

import numpy as np
from scipy import stats
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os<jupyter_output><empty_output><jupyter_text>Se carga el dataset desde Google Drive en formato *.csv*, para luego leer este con *pandas*.<jupyter_code>path_data = '/content/drive/MyDrive/DataMining/animelists_cleaned.csv'
# Read data

data = pd.read_csv(path_data)<jupyter_output><empty_output><jupyter_text>Exploración numérica de los datos<jupyter_code>print('Dataset:',str(data.shape[0]),'rows,',str(data.shape[1]),'columns')
print('Dataset columns')
print()
for col in data.columns:
    print(col)
data.info()
data.describe()
stats.iqr(data['my_watched_episodes'])
data.isna().sum()<jupyter_output><empty_output><jupyter_text>Si se eliminaran todos los valores NaN del dataset, este quedaría con muy pocos datos. Frente a esto es mejor eliminar las columnas de ***my_tags*** y ***my_rewatching***. Además, las columnas de ***username*** y ***anime_id*** no parecen, a priori, aportar mucha información, por lo que se eliminarán igualmente.<jupyter_code>col_to_del = [
              'username',
              'anime_id',
              'my_rewatching',
              'my_tags'
]

for col in col_to_del:
    try:
        del data[col]
    except:
        continue

data<jupyter_output><empty_output><jupyter_text>Exploración visual de los datos<jupyter_code>data.hist(figsize=(20,10))
# More attention in my_score

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15,8))
ax1.hist(data['my_score'],bins=50,color='orange')
ax1.set_title('Frecuency of scores values')
ax1.set_xlabel('My score')
ax1.set_ylabel('Frecuency')

ax2.hist(data['my_watched_episodes'], bins=300,log=True)
ax2.set_xlim(-50,3000)
ax2.set_title('Frecuency of watched episodes quantity (log)')
ax2.set_xlabel('My watched episodes')
# Estas lineas de codigo cuantos valores 0 hay en las columnas pedidas
# pero se demora mucho en correr (o derechamente no corre)

# Tengo que buscar una forma más eficiente de hacerlo

#score_zeros = data[data['my_score']==0].sum()
#wat_epi_zeros = data[data['my_watched_episodes']==0].sum()<jupyter_output><empty_output><jupyter_text>Aquí pareciese haber una relación entre:1.   La gran cantidad de ceros que hay en ***my_score*** y ***my_watched_videos***.2.   Las curvas posteriores a la gran cantidad de 0's en ambos atributos.<jupyter_code># Outliers my_watched_episodes

fig = plt.figure(figsize=(20,5))
ax = sns.boxplot(x=data['my_watched_episodes'])
ax = plt.xlabel('My Watched Episodes')

# Outliers my_score
fig = plt.figure(figsize=(20,5),)
ax = sns.boxplot(x=data['my_score'])
ax = plt.xlabel('My Score')

# Outliers my_status

fig = plt.figure(figsize=(20,5),)
ax = sns.boxplot(x=data['my_status'])
ax = plt.xlabel('My Status')
# Correlations

data.corr()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.130173564753004, 'fraction_numerical': 0.01568758344459279, 'mean_word_length': 5.85812356979405, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '551195', 'license': 'MIT', 'n_tokens_mistral': 1147, 'n_tokens_neox': 1117, 'n_words': 257, 'path': 'Hito1_Animelists.ipynb', 'repo_name': 'diegoolguinw/AnimeDataSet', 'size': '2996'}