diff --git a/.gitignore b/.gitignore deleted file mode 100644 index b6e4761..0000000 --- a/.gitignore +++ /dev/null @@ -1,129 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -pip-wheel-metadata/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -.python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ diff --git a/06 - Modelo_ALS.ipynb b/06 - Modelo_ALS.ipynb deleted file mode 100644 index cc9e2f0..0000000 --- a/06 - Modelo_ALS.ipynb +++ /dev/null @@ -1,464 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Modelo ALS", - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "code", - "metadata": { - "id": "-CaeYO4F-OPi" - }, - "source": [ - "# instalar as dependências\n", - "!apt-get install openjdk-8-jdk-headless -qq > /dev/null\n", - "!wget -q https://archive.apache.org/dist/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz\n", - "!tar xf spark-2.4.4-bin-hadoop2.7.tgz\n", - "!pip install -q findspark" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "sOGzt4aB-fjg" - }, - "source": [ - "# configurar as variáveis de ambiente\n", - "import os\n", - "os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n", - "os.environ[\"SPARK_HOME\"] = \"/content/spark-2.4.4-bin-hadoop2.7\"\n", - "\n", - "# tornar o pyspark \"importável\"\n", - "import findspark\n", - "findspark.init('spark-2.4.4-bin-hadoop2.7')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "uIfWkewv-mXF" - }, - "source": [ - "from __future__ import print_function\n", - "\n", - "import sys\n", - "if sys.version >= '3':\n", - " long = int\n", - "\n", - "from pyspark.sql import SparkSession\n", - "\n", - "from pyspark.ml.evaluation import RegressionEvaluator #evaluation é a biblioteca para verificação da qualidade do modelo\n", - "from pyspark.ml.recommendation import ALS # ALS é o modelo de recomendação que será utilizadp\n", - "from pyspark.sql import Row #row é o formato que o ALS trabalha, row conterá o id do usuario, id filme, nota e timestamp" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "o_MjmoGl_AaX" - }, - "source": [ - "spark = SparkSession.builder.master('local[*]').getOrCreate() #criar/iniciar a sessão spark" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "hbVUD2aqg8Gk" - }, - "source": [ - "lines = spark.read.text(\"sample_movielens_ratings.txt\").rdd #Carregar os dados. RDD é uma estrutura paralelizada do spark" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "eqqx9-H1_WOX" - }, - "source": [ - "parts = lines.map(lambda row: row.value.split(\"::\")) #pega os itens de lines e aplica map para quebrar em partes\n", - "#fez expressão lambda, nomeou cada linha como row e quebra cada row a cada \"::\" retorna um array com 4 itens" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "pWwOX1o4DrlY" - }, - "source": [ - "#ratingsRDD: pega cada parte do item acima e converte para formato Row, instanciando nome e posição\n", - "ratingsRDD = parts.map(lambda p: Row(userId=int(p[0]), movieId=int(p[1]), rating=float(p[2]), timestamp=long(p[3])))" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "W5T4NAi1nS2S" - }, - "source": [ - "ratings = spark.createDataFrame(ratingsRDD) #pega ratingsRDD e coloca em formato de tabela" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "He6QkNy9hXmz", - "outputId": "993b7a78-0593-43c4-dc99-da1649a8842d" - }, - "source": [ - "ratings.show()" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "text": [ - "+-------+------+----------+------+\n", - "|movieId|rating| timestamp|userId|\n", - "+-------+------+----------+------+\n", - "| 2| 3.0|1424380312| 0|\n", - "| 3| 1.0|1424380312| 0|\n", - "| 5| 2.0|1424380312| 0|\n", - "| 9| 4.0|1424380312| 0|\n", - "| 11| 1.0|1424380312| 0|\n", - "| 12| 2.0|1424380312| 0|\n", - "| 15| 1.0|1424380312| 0|\n", - "| 17| 1.0|1424380312| 0|\n", - "| 19| 1.0|1424380312| 0|\n", - "| 21| 1.0|1424380312| 0|\n", - "| 23| 1.0|1424380312| 0|\n", - "| 26| 3.0|1424380312| 0|\n", - "| 27| 1.0|1424380312| 0|\n", - "| 28| 1.0|1424380312| 0|\n", - "| 29| 1.0|1424380312| 0|\n", - "| 30| 1.0|1424380312| 0|\n", - "| 31| 1.0|1424380312| 0|\n", - "| 34| 1.0|1424380312| 0|\n", - "| 37| 1.0|1424380312| 0|\n", - "| 41| 2.0|1424380312| 0|\n", - "+-------+------+----------+------+\n", - "only showing top 20 rows\n", - "\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "-zpPhZ61hgon" - }, - "source": [ - "(training, test) = ratings.randomSplit([0.8, 0.2]) #divide o df em porções para treinamento e teste" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "jp9FAaBshqUh" - }, - "source": [ - "als = ALS(maxIter=5, regParam=0.01, userCol=\"userId\", itemCol=\"movieId\", ratingCol=\"rating\", coldStartStrategy=\"drop\")\n", - "#instancia o modelo ALS; maxIter é o máximo de iterações, regParam é coeficiente de aprendizado,\n", - "#coldstart é quando o usuário fez poucas iterações com o sistemas ou o sistema tem a matriz muito esparsa, drop: se algum usuário\n", - "#tiver problema de coldstart, não será considerado no sistema" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "jLt3j9WXhih9" - }, - "source": [ - "model = als.fit(training) #treina o modelo com o dataset de treinamento" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "ooGOA8s8iLES", - "outputId": "958ee0da-8f26-4e4a-cc65-e04adf4ee1b4" - }, - "source": [ - "predictions = model.transform(test) #aplica o modelo no conjunto de teste para fazer predições\n", - "evaluator = RegressionEvaluator(metricName=\"rmse\", labelCol=\"rating\",\n", - " predictionCol=\"prediction\")\n", - "rmse = evaluator.evaluate(predictions)\n", - "print(\"Erro médio quadrático = \" + str(rmse))" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Erro médio quadrático = 1.82015383545805\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "1AayAItWmX53" - }, - "source": [ - "userRec = model.recommendForAllUsers(10) #pegar todos os usuários e gerar 10 recomendações" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "J2D3AX47mbno", - "outputId": "3d399616-f62d-4435-e038-532c6ec5061a" - }, - "source": [ - "userRec.show()" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "text": [ - "+------+--------------------+\n", - "|userId| recommendations|\n", - "+------+--------------------+\n", - "| 28|[[91, 7.199192], ...|\n", - "| 26|[[30, 6.8022966],...|\n", - "| 27|[[18, 4.345591], ...|\n", - "| 12|[[35, 5.1877465],...|\n", - "| 22|[[4, 5.187028], [...|\n", - "| 1|[[17, 4.4631], [9...|\n", - "| 13|[[2, 3.0728006], ...|\n", - "| 6|[[25, 4.814437], ...|\n", - "| 16|[[76, 5.6596413],...|\n", - "| 3|[[32, 5.3414116],...|\n", - "| 20|[[46, 5.877379], ...|\n", - "| 5|[[18, 4.877655], ...|\n", - "| 19|[[51, 5.3770857],...|\n", - "| 15|[[46, 4.7499933],...|\n", - "| 17|[[90, 5.0351977],...|\n", - "| 9|[[51, 5.090912], ...|\n", - "| 4|[[92, 5.3576517],...|\n", - "| 8|[[25, 5.7912273],...|\n", - "| 23|[[46, 6.087576], ...|\n", - "| 7|[[25, 4.92321], [...|\n", - "+------+--------------------+\n", - "only showing top 20 rows\n", - "\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "at1apd0lmhBk" - }, - "source": [ - "movieRecs = model.recommendForAllItems(10) #faz a transposta da matriz de ratings, a fim de recomendar usuários em potencial para itens específicos" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Al3u35R2mi_p", - "outputId": "37ff86e2-aff0-4436-fb6f-bdf585502ba0" - }, - "source": [ - "movieRecs.show()" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "text": [ - "+-------+--------------------+\n", - "|movieId| recommendations|\n", - "+-------+--------------------+\n", - "| 31|[[28, 4.4335637],...|\n", - "| 85|[[16, 4.4600816],...|\n", - "| 65|[[23, 4.8359885],...|\n", - "| 53|[[21, 4.8665752],...|\n", - "| 78|[[5, 1.405179], [...|\n", - "| 34|[[23, 5.4059834],...|\n", - "| 81|[[12, 5.1232557],...|\n", - "| 28|[[18, 5.062015], ...|\n", - "| 76|[[16, 5.6596413],...|\n", - "| 26|[[22, 4.0410576],...|\n", - "| 27|[[2, 5.0788355], ...|\n", - "| 44|[[11, 3.253865], ...|\n", - "| 12|[[28, 4.8772264],...|\n", - "| 91|[[28, 7.199192], ...|\n", - "| 22|[[26, 5.148896], ...|\n", - "| 93|[[27, 1.0710598],...|\n", - "| 47|[[8, 4.567012], [...|\n", - "| 1|[[16, 4.053723], ...|\n", - "| 52|[[8, 4.92321], [2...|\n", - "| 13|[[23, 4.0366826],...|\n", - "+-------+--------------------+\n", - "only showing top 20 rows\n", - "\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "otO0JDGRmmPd" - }, - "source": [ - "users = ratings.select(als.getUserCol()).distinct() #selecina os usuários que existem nesse universo" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "tM8z5hpumo-f", - "outputId": "bbcf1956-9af1-40ac-8f49-41308e775cb1" - }, - "source": [ - "users.show()" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "text": [ - "+------+\n", - "|userId|\n", - "+------+\n", - "| 26|\n", - "| 29|\n", - "| 19|\n", - "| 0|\n", - "| 22|\n", - "| 7|\n", - "| 25|\n", - "| 6|\n", - "| 9|\n", - "| 27|\n", - "| 17|\n", - "| 28|\n", - "| 5|\n", - "| 1|\n", - "| 10|\n", - "| 3|\n", - "| 12|\n", - "| 8|\n", - "| 11|\n", - "| 2|\n", - "+------+\n", - "only showing top 20 rows\n", - "\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "YeIDF41BmtFd" - }, - "source": [ - "UserRecsOnlyItemId = userRec.select(userRec['userId'], userRec['recommendations']['movieid'])" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "JFt5sr2voUbS", - "outputId": "d056b74c-d451-470f-f39a-1f6d06fd86f8" - }, - "source": [ - "UserRecsOnlyItemId.show(10, False) #mostra somente as recomendações por usuário" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "text": [ - "+------+----------------------------------------+\n", - "|userId|recommendations.movieid |\n", - "+------+----------------------------------------+\n", - "|28 |[91, 92, 12, 81, 79, 31, 89, 49, 35, 82]|\n", - "|26 |[30, 32, 94, 17, 22, 88, 7, 98, 90, 24] |\n", - "|27 |[18, 2, 48, 19, 55, 66, 23, 44, 7, 33] |\n", - "|12 |[35, 81, 17, 88, 79, 64, 69, 27, 31, 16]|\n", - "|22 |[4, 51, 75, 74, 52, 88, 30, 9, 85, 58] |\n", - "|1 |[17, 90, 62, 51, 69, 85, 28, 22, 38, 76]|\n", - "|13 |[2, 52, 29, 18, 53, 9, 43, 92, 58, 83] |\n", - "|6 |[25, 62, 51, 90, 76, 85, 58, 2, 95, 63] |\n", - "|16 |[76, 62, 90, 29, 51, 54, 85, 1, 53, 69] |\n", - "|3 |[32, 51, 30, 80, 7, 85, 76, 8, 29, 87] |\n", - "+------+----------------------------------------+\n", - "only showing top 10 rows\n", - "\n" - ], - "name": "stdout" - } - ] - } - ] -} \ No newline at end of file diff --git a/06- sample_movielens_ratings.txt b/06- sample_movielens_ratings.txt deleted file mode 100644 index 0889142..0000000 --- a/06- sample_movielens_ratings.txt +++ /dev/null @@ -1,1501 +0,0 @@ -0::2::3::1424380312 -0::3::1::1424380312 -0::5::2::1424380312 -0::9::4::1424380312 -0::11::1::1424380312 -0::12::2::1424380312 -0::15::1::1424380312 -0::17::1::1424380312 -0::19::1::1424380312 -0::21::1::1424380312 -0::23::1::1424380312 -0::26::3::1424380312 -0::27::1::1424380312 -0::28::1::1424380312 -0::29::1::1424380312 -0::30::1::1424380312 -0::31::1::1424380312 -0::34::1::1424380312 -0::37::1::1424380312 -0::41::2::1424380312 -0::44::1::1424380312 -0::45::2::1424380312 -0::46::1::1424380312 -0::47::1::1424380312 -0::48::1::1424380312 -0::50::1::1424380312 -0::51::1::1424380312 -0::54::1::1424380312 -0::55::1::1424380312 -0::59::2::1424380312 -0::61::2::1424380312 -0::64::1::1424380312 -0::67::1::1424380312 -0::68::1::1424380312 -0::69::1::1424380312 -0::71::1::1424380312 -0::72::1::1424380312 -0::77::2::1424380312 -0::79::1::1424380312 -0::83::1::1424380312 -0::87::1::1424380312 -0::89::2::1424380312 -0::91::3::1424380312 -0::92::4::1424380312 -0::94::1::1424380312 -0::95::2::1424380312 -0::96::1::1424380312 -0::98::1::1424380312 -0::99::1::1424380312 -1::2::2::1424380312 -1::3::1::1424380312 -1::4::2::1424380312 -1::6::1::1424380312 -1::9::3::1424380312 -1::12::1::1424380312 -1::13::1::1424380312 -1::14::1::1424380312 -1::16::1::1424380312 -1::19::1::1424380312 -1::21::3::1424380312 -1::27::1::1424380312 -1::28::3::1424380312 -1::33::1::1424380312 -1::36::2::1424380312 -1::37::1::1424380312 -1::40::1::1424380312 -1::41::2::1424380312 -1::43::1::1424380312 -1::44::1::1424380312 -1::47::1::1424380312 -1::50::1::1424380312 -1::54::1::1424380312 -1::56::2::1424380312 -1::57::1::1424380312 -1::58::1::1424380312 -1::60::1::1424380312 -1::62::4::1424380312 -1::63::1::1424380312 -1::67::1::1424380312 -1::68::4::1424380312 -1::70::2::1424380312 -1::72::1::1424380312 -1::73::1::1424380312 -1::74::2::1424380312 -1::76::1::1424380312 -1::77::3::1424380312 -1::78::1::1424380312 -1::81::1::1424380312 -1::82::1::1424380312 -1::85::3::1424380312 -1::86::2::1424380312 -1::88::2::1424380312 -1::91::1::1424380312 -1::92::2::1424380312 -1::93::1::1424380312 -1::94::2::1424380312 -1::96::1::1424380312 -1::97::1::1424380312 -2::4::3::1424380312 -2::6::1::1424380312 -2::8::5::1424380312 -2::9::1::1424380312 -2::10::1::1424380312 -2::12::3::1424380312 -2::13::1::1424380312 -2::15::2::1424380312 -2::18::2::1424380312 -2::19::4::1424380312 -2::22::1::1424380312 -2::26::1::1424380312 -2::28::1::1424380312 -2::34::4::1424380312 -2::35::1::1424380312 -2::37::5::1424380312 -2::38::1::1424380312 -2::39::5::1424380312 -2::40::4::1424380312 -2::47::1::1424380312 -2::50::1::1424380312 -2::52::2::1424380312 -2::54::1::1424380312 -2::55::1::1424380312 -2::57::2::1424380312 -2::58::2::1424380312 -2::59::1::1424380312 -2::61::1::1424380312 -2::62::1::1424380312 -2::64::1::1424380312 -2::65::1::1424380312 -2::66::3::1424380312 -2::68::1::1424380312 -2::71::3::1424380312 -2::76::1::1424380312 -2::77::1::1424380312 -2::78::1::1424380312 -2::80::1::1424380312 -2::83::5::1424380312 -2::85::1::1424380312 -2::87::2::1424380312 -2::88::1::1424380312 -2::89::4::1424380312 -2::90::1::1424380312 -2::92::4::1424380312 -2::93::5::1424380312 -3::0::1::1424380312 -3::1::1::1424380312 -3::2::1::1424380312 -3::7::3::1424380312 -3::8::3::1424380312 -3::9::1::1424380312 -3::14::1::1424380312 -3::15::1::1424380312 -3::16::1::1424380312 -3::18::4::1424380312 -3::19::1::1424380312 -3::24::3::1424380312 -3::26::1::1424380312 -3::29::3::1424380312 -3::33::1::1424380312 -3::34::3::1424380312 -3::35::1::1424380312 -3::36::3::1424380312 -3::37::1::1424380312 -3::38::2::1424380312 -3::43::1::1424380312 -3::44::1::1424380312 -3::46::1::1424380312 -3::47::1::1424380312 -3::51::5::1424380312 -3::52::3::1424380312 -3::56::1::1424380312 -3::58::1::1424380312 -3::60::3::1424380312 -3::62::1::1424380312 -3::65::2::1424380312 -3::66::1::1424380312 -3::67::1::1424380312 -3::68::2::1424380312 -3::70::1::1424380312 -3::72::2::1424380312 -3::76::3::1424380312 -3::79::3::1424380312 -3::80::4::1424380312 -3::81::1::1424380312 -3::83::1::1424380312 -3::84::1::1424380312 -3::86::1::1424380312 -3::87::2::1424380312 -3::88::4::1424380312 -3::89::1::1424380312 -3::91::1::1424380312 -3::94::3::1424380312 -4::1::1::1424380312 -4::6::1::1424380312 -4::8::1::1424380312 -4::9::1::1424380312 -4::10::1::1424380312 -4::11::1::1424380312 -4::12::1::1424380312 -4::13::1::1424380312 -4::14::2::1424380312 -4::15::1::1424380312 -4::17::1::1424380312 -4::20::1::1424380312 -4::22::1::1424380312 -4::23::1::1424380312 -4::24::1::1424380312 -4::29::4::1424380312 -4::30::1::1424380312 -4::31::1::1424380312 -4::34::1::1424380312 -4::35::1::1424380312 -4::36::1::1424380312 -4::39::2::1424380312 -4::40::3::1424380312 -4::41::4::1424380312 -4::43::2::1424380312 -4::44::1::1424380312 -4::45::1::1424380312 -4::46::1::1424380312 -4::47::1::1424380312 -4::49::2::1424380312 -4::50::1::1424380312 -4::51::1::1424380312 -4::52::4::1424380312 -4::54::1::1424380312 -4::55::1::1424380312 -4::60::3::1424380312 -4::61::1::1424380312 -4::62::4::1424380312 -4::63::3::1424380312 -4::65::1::1424380312 -4::67::2::1424380312 -4::69::1::1424380312 -4::70::4::1424380312 -4::71::1::1424380312 -4::73::1::1424380312 -4::78::1::1424380312 -4::84::1::1424380312 -4::85::1::1424380312 -4::87::3::1424380312 -4::88::3::1424380312 -4::89::2::1424380312 -4::96::1::1424380312 -4::97::1::1424380312 -4::98::1::1424380312 -4::99::1::1424380312 -5::0::1::1424380312 -5::1::1::1424380312 -5::4::1::1424380312 -5::5::1::1424380312 -5::8::1::1424380312 -5::9::3::1424380312 -5::10::2::1424380312 -5::13::3::1424380312 -5::15::1::1424380312 -5::19::1::1424380312 -5::20::3::1424380312 -5::21::2::1424380312 -5::23::3::1424380312 -5::27::1::1424380312 -5::28::1::1424380312 -5::29::1::1424380312 -5::31::1::1424380312 -5::36::3::1424380312 -5::38::2::1424380312 -5::39::1::1424380312 -5::42::1::1424380312 -5::48::3::1424380312 -5::49::4::1424380312 -5::50::3::1424380312 -5::51::1::1424380312 -5::52::1::1424380312 -5::54::1::1424380312 -5::55::5::1424380312 -5::56::3::1424380312 -5::58::1::1424380312 -5::60::1::1424380312 -5::61::1::1424380312 -5::64::3::1424380312 -5::65::2::1424380312 -5::68::4::1424380312 -5::70::1::1424380312 -5::71::1::1424380312 -5::72::1::1424380312 -5::74::1::1424380312 -5::79::1::1424380312 -5::81::2::1424380312 -5::84::1::1424380312 -5::85::1::1424380312 -5::86::1::1424380312 -5::88::1::1424380312 -5::90::4::1424380312 -5::91::2::1424380312 -5::95::2::1424380312 -5::99::1::1424380312 -6::0::1::1424380312 -6::1::1::1424380312 -6::2::3::1424380312 -6::5::1::1424380312 -6::6::1::1424380312 -6::9::1::1424380312 -6::10::1::1424380312 -6::15::2::1424380312 -6::16::2::1424380312 -6::17::1::1424380312 -6::18::1::1424380312 -6::20::1::1424380312 -6::21::1::1424380312 -6::22::1::1424380312 -6::24::1::1424380312 -6::25::5::1424380312 -6::26::1::1424380312 -6::28::1::1424380312 -6::30::1::1424380312 -6::33::1::1424380312 -6::38::1::1424380312 -6::39::1::1424380312 -6::43::4::1424380312 -6::44::1::1424380312 -6::45::1::1424380312 -6::48::1::1424380312 -6::49::1::1424380312 -6::50::1::1424380312 -6::53::1::1424380312 -6::54::1::1424380312 -6::55::1::1424380312 -6::56::1::1424380312 -6::58::4::1424380312 -6::59::1::1424380312 -6::60::1::1424380312 -6::61::3::1424380312 -6::63::3::1424380312 -6::66::1::1424380312 -6::67::3::1424380312 -6::68::1::1424380312 -6::69::1::1424380312 -6::71::2::1424380312 -6::73::1::1424380312 -6::75::1::1424380312 -6::77::1::1424380312 -6::79::1::1424380312 -6::81::1::1424380312 -6::84::1::1424380312 -6::85::3::1424380312 -6::86::1::1424380312 -6::87::1::1424380312 -6::88::1::1424380312 -6::89::1::1424380312 -6::91::2::1424380312 -6::94::1::1424380312 -6::95::2::1424380312 -6::96::1::1424380312 -7::1::1::1424380312 -7::2::2::1424380312 -7::3::1::1424380312 -7::4::1::1424380312 -7::7::1::1424380312 -7::10::1::1424380312 -7::11::2::1424380312 -7::14::2::1424380312 -7::15::1::1424380312 -7::16::1::1424380312 -7::18::1::1424380312 -7::21::1::1424380312 -7::22::1::1424380312 -7::23::1::1424380312 -7::25::5::1424380312 -7::26::1::1424380312 -7::29::4::1424380312 -7::30::1::1424380312 -7::31::3::1424380312 -7::32::1::1424380312 -7::33::1::1424380312 -7::35::1::1424380312 -7::37::2::1424380312 -7::39::3::1424380312 -7::40::2::1424380312 -7::42::2::1424380312 -7::44::1::1424380312 -7::45::2::1424380312 -7::47::4::1424380312 -7::48::1::1424380312 -7::49::1::1424380312 -7::53::1::1424380312 -7::54::1::1424380312 -7::55::1::1424380312 -7::56::1::1424380312 -7::59::1::1424380312 -7::61::2::1424380312 -7::62::3::1424380312 -7::63::2::1424380312 -7::66::1::1424380312 -7::67::3::1424380312 -7::74::1::1424380312 -7::75::1::1424380312 -7::76::3::1424380312 -7::77::1::1424380312 -7::81::1::1424380312 -7::82::1::1424380312 -7::84::2::1424380312 -7::85::4::1424380312 -7::86::1::1424380312 -7::92::2::1424380312 -7::96::1::1424380312 -7::97::1::1424380312 -7::98::1::1424380312 -8::0::1::1424380312 -8::2::4::1424380312 -8::3::2::1424380312 -8::4::2::1424380312 -8::5::1::1424380312 -8::7::1::1424380312 -8::9::1::1424380312 -8::11::1::1424380312 -8::15::1::1424380312 -8::18::1::1424380312 -8::19::1::1424380312 -8::21::1::1424380312 -8::29::5::1424380312 -8::31::3::1424380312 -8::33::1::1424380312 -8::35::1::1424380312 -8::36::1::1424380312 -8::40::2::1424380312 -8::44::1::1424380312 -8::45::1::1424380312 -8::50::1::1424380312 -8::51::1::1424380312 -8::52::5::1424380312 -8::53::5::1424380312 -8::54::1::1424380312 -8::55::1::1424380312 -8::56::1::1424380312 -8::58::4::1424380312 -8::60::3::1424380312 -8::62::4::1424380312 -8::64::1::1424380312 -8::67::3::1424380312 -8::69::1::1424380312 -8::71::1::1424380312 -8::72::3::1424380312 -8::77::3::1424380312 -8::78::1::1424380312 -8::79::1::1424380312 -8::83::1::1424380312 -8::85::5::1424380312 -8::86::1::1424380312 -8::88::1::1424380312 -8::90::1::1424380312 -8::92::2::1424380312 -8::95::4::1424380312 -8::96::3::1424380312 -8::97::1::1424380312 -8::98::1::1424380312 -8::99::1::1424380312 -9::2::3::1424380312 -9::3::1::1424380312 -9::4::1::1424380312 -9::5::1::1424380312 -9::6::1::1424380312 -9::7::5::1424380312 -9::9::1::1424380312 -9::12::1::1424380312 -9::14::3::1424380312 -9::15::1::1424380312 -9::19::1::1424380312 -9::21::1::1424380312 -9::22::1::1424380312 -9::24::1::1424380312 -9::25::1::1424380312 -9::26::1::1424380312 -9::30::3::1424380312 -9::32::4::1424380312 -9::35::2::1424380312 -9::36::2::1424380312 -9::37::2::1424380312 -9::38::1::1424380312 -9::39::1::1424380312 -9::43::3::1424380312 -9::49::5::1424380312 -9::50::3::1424380312 -9::53::1::1424380312 -9::54::1::1424380312 -9::58::1::1424380312 -9::59::1::1424380312 -9::60::1::1424380312 -9::61::1::1424380312 -9::63::3::1424380312 -9::64::3::1424380312 -9::68::1::1424380312 -9::69::1::1424380312 -9::70::3::1424380312 -9::71::1::1424380312 -9::73::2::1424380312 -9::75::1::1424380312 -9::77::2::1424380312 -9::81::2::1424380312 -9::82::1::1424380312 -9::83::1::1424380312 -9::84::1::1424380312 -9::86::1::1424380312 -9::87::4::1424380312 -9::88::1::1424380312 -9::90::3::1424380312 -9::94::2::1424380312 -9::95::3::1424380312 -9::97::2::1424380312 -9::98::1::1424380312 -10::0::3::1424380312 -10::2::4::1424380312 -10::4::3::1424380312 -10::7::1::1424380312 -10::8::1::1424380312 -10::10::1::1424380312 -10::13::2::1424380312 -10::14::1::1424380312 -10::16::2::1424380312 -10::17::1::1424380312 -10::18::1::1424380312 -10::21::1::1424380312 -10::22::1::1424380312 -10::24::1::1424380312 -10::25::3::1424380312 -10::28::1::1424380312 -10::35::1::1424380312 -10::36::1::1424380312 -10::37::1::1424380312 -10::38::1::1424380312 -10::39::1::1424380312 -10::40::4::1424380312 -10::41::2::1424380312 -10::42::3::1424380312 -10::43::1::1424380312 -10::49::3::1424380312 -10::50::1::1424380312 -10::51::1::1424380312 -10::52::1::1424380312 -10::55::2::1424380312 -10::56::1::1424380312 -10::58::1::1424380312 -10::63::1::1424380312 -10::66::1::1424380312 -10::67::2::1424380312 -10::68::1::1424380312 -10::75::1::1424380312 -10::77::1::1424380312 -10::79::1::1424380312 -10::86::1::1424380312 -10::89::3::1424380312 -10::90::1::1424380312 -10::97::1::1424380312 -10::98::1::1424380312 -11::0::1::1424380312 -11::6::2::1424380312 -11::9::1::1424380312 -11::10::1::1424380312 -11::11::1::1424380312 -11::12::1::1424380312 -11::13::4::1424380312 -11::16::1::1424380312 -11::18::5::1424380312 -11::19::4::1424380312 -11::20::1::1424380312 -11::21::1::1424380312 -11::22::1::1424380312 -11::23::5::1424380312 -11::25::1::1424380312 -11::27::5::1424380312 -11::30::5::1424380312 -11::32::5::1424380312 -11::35::3::1424380312 -11::36::2::1424380312 -11::37::2::1424380312 -11::38::4::1424380312 -11::39::1::1424380312 -11::40::1::1424380312 -11::41::1::1424380312 -11::43::2::1424380312 -11::45::1::1424380312 -11::47::1::1424380312 -11::48::5::1424380312 -11::50::4::1424380312 -11::51::3::1424380312 -11::59::1::1424380312 -11::61::1::1424380312 -11::62::1::1424380312 -11::64::1::1424380312 -11::66::4::1424380312 -11::67::1::1424380312 -11::69::5::1424380312 -11::70::1::1424380312 -11::71::3::1424380312 -11::72::3::1424380312 -11::75::3::1424380312 -11::76::1::1424380312 -11::77::1::1424380312 -11::78::1::1424380312 -11::79::5::1424380312 -11::80::3::1424380312 -11::81::4::1424380312 -11::82::1::1424380312 -11::86::1::1424380312 -11::88::1::1424380312 -11::89::1::1424380312 -11::90::4::1424380312 -11::94::2::1424380312 -11::97::3::1424380312 -11::99::1::1424380312 -12::2::1::1424380312 -12::4::1::1424380312 -12::6::1::1424380312 -12::7::3::1424380312 -12::8::1::1424380312 -12::14::1::1424380312 -12::15::2::1424380312 -12::16::4::1424380312 -12::17::5::1424380312 -12::18::2::1424380312 -12::21::1::1424380312 -12::22::2::1424380312 -12::23::3::1424380312 -12::24::1::1424380312 -12::25::1::1424380312 -12::27::5::1424380312 -12::30::2::1424380312 -12::31::4::1424380312 -12::35::5::1424380312 -12::38::1::1424380312 -12::41::1::1424380312 -12::44::2::1424380312 -12::45::1::1424380312 -12::50::4::1424380312 -12::51::1::1424380312 -12::52::1::1424380312 -12::53::1::1424380312 -12::54::1::1424380312 -12::56::2::1424380312 -12::57::1::1424380312 -12::60::1::1424380312 -12::63::1::1424380312 -12::64::5::1424380312 -12::66::3::1424380312 -12::67::1::1424380312 -12::70::1::1424380312 -12::72::1::1424380312 -12::74::1::1424380312 -12::75::1::1424380312 -12::77::1::1424380312 -12::78::1::1424380312 -12::79::3::1424380312 -12::82::2::1424380312 -12::83::1::1424380312 -12::84::1::1424380312 -12::85::1::1424380312 -12::86::1::1424380312 -12::87::1::1424380312 -12::88::1::1424380312 -12::91::3::1424380312 -12::92::1::1424380312 -12::94::4::1424380312 -12::95::2::1424380312 -12::96::1::1424380312 -12::98::2::1424380312 -13::0::1::1424380312 -13::3::1::1424380312 -13::4::2::1424380312 -13::5::1::1424380312 -13::6::1::1424380312 -13::12::1::1424380312 -13::14::2::1424380312 -13::15::1::1424380312 -13::17::1::1424380312 -13::18::3::1424380312 -13::20::1::1424380312 -13::21::1::1424380312 -13::22::1::1424380312 -13::26::1::1424380312 -13::27::1::1424380312 -13::29::3::1424380312 -13::31::1::1424380312 -13::33::1::1424380312 -13::40::2::1424380312 -13::43::2::1424380312 -13::44::1::1424380312 -13::45::1::1424380312 -13::49::1::1424380312 -13::51::1::1424380312 -13::52::2::1424380312 -13::53::3::1424380312 -13::54::1::1424380312 -13::62::1::1424380312 -13::63::2::1424380312 -13::64::1::1424380312 -13::68::1::1424380312 -13::71::1::1424380312 -13::72::3::1424380312 -13::73::1::1424380312 -13::74::3::1424380312 -13::77::2::1424380312 -13::78::1::1424380312 -13::79::2::1424380312 -13::83::3::1424380312 -13::85::1::1424380312 -13::86::1::1424380312 -13::87::2::1424380312 -13::88::2::1424380312 -13::90::1::1424380312 -13::93::4::1424380312 -13::94::1::1424380312 -13::98::1::1424380312 -13::99::1::1424380312 -14::1::1::1424380312 -14::3::3::1424380312 -14::4::1::1424380312 -14::5::1::1424380312 -14::6::1::1424380312 -14::7::1::1424380312 -14::9::1::1424380312 -14::10::1::1424380312 -14::11::1::1424380312 -14::12::1::1424380312 -14::13::1::1424380312 -14::14::3::1424380312 -14::15::1::1424380312 -14::16::1::1424380312 -14::17::1::1424380312 -14::20::1::1424380312 -14::21::1::1424380312 -14::24::1::1424380312 -14::25::2::1424380312 -14::27::1::1424380312 -14::28::1::1424380312 -14::29::5::1424380312 -14::31::3::1424380312 -14::34::1::1424380312 -14::36::1::1424380312 -14::37::2::1424380312 -14::39::2::1424380312 -14::40::1::1424380312 -14::44::1::1424380312 -14::45::1::1424380312 -14::47::3::1424380312 -14::48::1::1424380312 -14::49::1::1424380312 -14::51::1::1424380312 -14::52::5::1424380312 -14::53::3::1424380312 -14::54::1::1424380312 -14::55::1::1424380312 -14::56::1::1424380312 -14::62::4::1424380312 -14::63::5::1424380312 -14::67::3::1424380312 -14::68::1::1424380312 -14::69::3::1424380312 -14::71::1::1424380312 -14::72::4::1424380312 -14::73::1::1424380312 -14::76::5::1424380312 -14::79::1::1424380312 -14::82::1::1424380312 -14::83::1::1424380312 -14::88::1::1424380312 -14::93::3::1424380312 -14::94::1::1424380312 -14::95::2::1424380312 -14::96::4::1424380312 -14::98::1::1424380312 -15::0::1::1424380312 -15::1::4::1424380312 -15::2::1::1424380312 -15::5::2::1424380312 -15::6::1::1424380312 -15::7::1::1424380312 -15::13::1::1424380312 -15::14::1::1424380312 -15::15::1::1424380312 -15::17::2::1424380312 -15::19::2::1424380312 -15::22::2::1424380312 -15::23::2::1424380312 -15::25::1::1424380312 -15::26::3::1424380312 -15::27::1::1424380312 -15::28::2::1424380312 -15::29::1::1424380312 -15::32::1::1424380312 -15::33::2::1424380312 -15::34::1::1424380312 -15::35::2::1424380312 -15::36::1::1424380312 -15::37::1::1424380312 -15::39::1::1424380312 -15::42::1::1424380312 -15::46::5::1424380312 -15::48::2::1424380312 -15::50::2::1424380312 -15::51::1::1424380312 -15::52::1::1424380312 -15::58::1::1424380312 -15::62::1::1424380312 -15::64::3::1424380312 -15::65::2::1424380312 -15::72::1::1424380312 -15::73::1::1424380312 -15::74::1::1424380312 -15::79::1::1424380312 -15::80::1::1424380312 -15::81::1::1424380312 -15::82::2::1424380312 -15::85::1::1424380312 -15::87::1::1424380312 -15::91::2::1424380312 -15::96::1::1424380312 -15::97::1::1424380312 -15::98::3::1424380312 -16::2::1::1424380312 -16::5::3::1424380312 -16::6::2::1424380312 -16::7::1::1424380312 -16::9::1::1424380312 -16::12::1::1424380312 -16::14::1::1424380312 -16::15::1::1424380312 -16::19::1::1424380312 -16::21::2::1424380312 -16::29::4::1424380312 -16::30::2::1424380312 -16::32::1::1424380312 -16::34::1::1424380312 -16::36::1::1424380312 -16::38::1::1424380312 -16::46::1::1424380312 -16::47::3::1424380312 -16::48::1::1424380312 -16::49::1::1424380312 -16::50::1::1424380312 -16::51::5::1424380312 -16::54::5::1424380312 -16::55::1::1424380312 -16::56::2::1424380312 -16::57::1::1424380312 -16::60::1::1424380312 -16::63::2::1424380312 -16::65::1::1424380312 -16::67::1::1424380312 -16::72::1::1424380312 -16::74::1::1424380312 -16::80::1::1424380312 -16::81::1::1424380312 -16::82::1::1424380312 -16::85::5::1424380312 -16::86::1::1424380312 -16::90::5::1424380312 -16::91::1::1424380312 -16::93::1::1424380312 -16::94::3::1424380312 -16::95::2::1424380312 -16::96::3::1424380312 -16::98::3::1424380312 -16::99::1::1424380312 -17::2::1::1424380312 -17::3::1::1424380312 -17::6::1::1424380312 -17::10::4::1424380312 -17::11::1::1424380312 -17::13::2::1424380312 -17::17::5::1424380312 -17::19::1::1424380312 -17::20::5::1424380312 -17::22::4::1424380312 -17::28::1::1424380312 -17::29::1::1424380312 -17::33::1::1424380312 -17::34::1::1424380312 -17::35::2::1424380312 -17::37::1::1424380312 -17::38::1::1424380312 -17::45::1::1424380312 -17::46::5::1424380312 -17::47::1::1424380312 -17::49::3::1424380312 -17::51::1::1424380312 -17::55::5::1424380312 -17::56::3::1424380312 -17::57::1::1424380312 -17::58::1::1424380312 -17::59::1::1424380312 -17::60::1::1424380312 -17::63::1::1424380312 -17::66::1::1424380312 -17::68::4::1424380312 -17::69::1::1424380312 -17::70::1::1424380312 -17::72::1::1424380312 -17::73::3::1424380312 -17::78::1::1424380312 -17::79::1::1424380312 -17::82::2::1424380312 -17::84::1::1424380312 -17::90::5::1424380312 -17::91::3::1424380312 -17::92::1::1424380312 -17::93::1::1424380312 -17::94::4::1424380312 -17::95::2::1424380312 -17::97::1::1424380312 -18::1::1::1424380312 -18::4::3::1424380312 -18::5::2::1424380312 -18::6::1::1424380312 -18::7::1::1424380312 -18::10::1::1424380312 -18::11::4::1424380312 -18::12::2::1424380312 -18::13::1::1424380312 -18::15::1::1424380312 -18::18::1::1424380312 -18::20::1::1424380312 -18::21::2::1424380312 -18::22::1::1424380312 -18::23::2::1424380312 -18::25::1::1424380312 -18::26::1::1424380312 -18::27::1::1424380312 -18::28::5::1424380312 -18::29::1::1424380312 -18::31::1::1424380312 -18::32::1::1424380312 -18::36::1::1424380312 -18::38::5::1424380312 -18::39::5::1424380312 -18::40::1::1424380312 -18::42::1::1424380312 -18::43::1::1424380312 -18::44::4::1424380312 -18::46::1::1424380312 -18::47::1::1424380312 -18::48::1::1424380312 -18::51::2::1424380312 -18::55::1::1424380312 -18::56::1::1424380312 -18::57::1::1424380312 -18::62::1::1424380312 -18::63::1::1424380312 -18::66::3::1424380312 -18::67::1::1424380312 -18::70::1::1424380312 -18::75::1::1424380312 -18::76::3::1424380312 -18::77::1::1424380312 -18::80::3::1424380312 -18::81::3::1424380312 -18::82::1::1424380312 -18::83::5::1424380312 -18::84::1::1424380312 -18::97::1::1424380312 -18::98::1::1424380312 -18::99::2::1424380312 -19::0::1::1424380312 -19::1::1::1424380312 -19::2::1::1424380312 -19::4::1::1424380312 -19::6::2::1424380312 -19::11::1::1424380312 -19::12::1::1424380312 -19::14::1::1424380312 -19::23::1::1424380312 -19::26::1::1424380312 -19::31::1::1424380312 -19::32::4::1424380312 -19::33::1::1424380312 -19::34::1::1424380312 -19::37::1::1424380312 -19::38::1::1424380312 -19::41::1::1424380312 -19::43::1::1424380312 -19::45::1::1424380312 -19::48::1::1424380312 -19::49::1::1424380312 -19::50::2::1424380312 -19::53::2::1424380312 -19::54::3::1424380312 -19::55::1::1424380312 -19::56::2::1424380312 -19::58::1::1424380312 -19::61::1::1424380312 -19::62::1::1424380312 -19::63::1::1424380312 -19::64::1::1424380312 -19::65::1::1424380312 -19::69::2::1424380312 -19::72::1::1424380312 -19::74::3::1424380312 -19::76::1::1424380312 -19::78::1::1424380312 -19::79::1::1424380312 -19::81::1::1424380312 -19::82::1::1424380312 -19::84::1::1424380312 -19::86::1::1424380312 -19::87::2::1424380312 -19::90::4::1424380312 -19::93::1::1424380312 -19::94::4::1424380312 -19::95::2::1424380312 -19::96::1::1424380312 -19::98::4::1424380312 -20::0::1::1424380312 -20::1::1::1424380312 -20::2::2::1424380312 -20::4::2::1424380312 -20::6::1::1424380312 -20::8::1::1424380312 -20::12::1::1424380312 -20::21::2::1424380312 -20::22::5::1424380312 -20::24::2::1424380312 -20::25::1::1424380312 -20::26::1::1424380312 -20::29::2::1424380312 -20::30::2::1424380312 -20::32::2::1424380312 -20::39::1::1424380312 -20::40::1::1424380312 -20::41::2::1424380312 -20::45::2::1424380312 -20::48::1::1424380312 -20::50::1::1424380312 -20::51::3::1424380312 -20::53::3::1424380312 -20::55::1::1424380312 -20::57::2::1424380312 -20::60::1::1424380312 -20::61::1::1424380312 -20::64::1::1424380312 -20::66::1::1424380312 -20::70::2::1424380312 -20::72::1::1424380312 -20::73::2::1424380312 -20::75::4::1424380312 -20::76::1::1424380312 -20::77::4::1424380312 -20::78::1::1424380312 -20::79::1::1424380312 -20::84::2::1424380312 -20::85::2::1424380312 -20::88::3::1424380312 -20::89::1::1424380312 -20::90::3::1424380312 -20::91::1::1424380312 -20::92::2::1424380312 -20::93::1::1424380312 -20::94::4::1424380312 -20::97::1::1424380312 -21::0::1::1424380312 -21::2::4::1424380312 -21::3::1::1424380312 -21::7::2::1424380312 -21::11::1::1424380312 -21::12::1::1424380312 -21::13::1::1424380312 -21::14::3::1424380312 -21::17::1::1424380312 -21::19::1::1424380312 -21::20::1::1424380312 -21::21::1::1424380312 -21::22::1::1424380312 -21::23::1::1424380312 -21::24::1::1424380312 -21::27::1::1424380312 -21::29::5::1424380312 -21::30::2::1424380312 -21::38::1::1424380312 -21::40::2::1424380312 -21::43::3::1424380312 -21::44::1::1424380312 -21::45::1::1424380312 -21::46::1::1424380312 -21::48::1::1424380312 -21::51::1::1424380312 -21::53::5::1424380312 -21::54::1::1424380312 -21::55::1::1424380312 -21::56::1::1424380312 -21::58::3::1424380312 -21::59::3::1424380312 -21::64::1::1424380312 -21::66::1::1424380312 -21::68::1::1424380312 -21::71::1::1424380312 -21::73::1::1424380312 -21::74::4::1424380312 -21::80::1::1424380312 -21::81::1::1424380312 -21::83::1::1424380312 -21::84::1::1424380312 -21::85::3::1424380312 -21::87::4::1424380312 -21::89::2::1424380312 -21::92::2::1424380312 -21::96::3::1424380312 -21::99::1::1424380312 -22::0::1::1424380312 -22::3::2::1424380312 -22::5::2::1424380312 -22::6::2::1424380312 -22::9::1::1424380312 -22::10::1::1424380312 -22::11::1::1424380312 -22::13::1::1424380312 -22::14::1::1424380312 -22::16::1::1424380312 -22::18::3::1424380312 -22::19::1::1424380312 -22::22::5::1424380312 -22::25::1::1424380312 -22::26::1::1424380312 -22::29::3::1424380312 -22::30::5::1424380312 -22::32::4::1424380312 -22::33::1::1424380312 -22::35::1::1424380312 -22::36::3::1424380312 -22::37::1::1424380312 -22::40::1::1424380312 -22::41::3::1424380312 -22::44::1::1424380312 -22::45::2::1424380312 -22::48::1::1424380312 -22::51::5::1424380312 -22::55::1::1424380312 -22::56::2::1424380312 -22::60::3::1424380312 -22::61::1::1424380312 -22::62::4::1424380312 -22::63::1::1424380312 -22::65::1::1424380312 -22::66::1::1424380312 -22::68::4::1424380312 -22::69::4::1424380312 -22::70::3::1424380312 -22::71::1::1424380312 -22::74::5::1424380312 -22::75::5::1424380312 -22::78::1::1424380312 -22::80::3::1424380312 -22::81::1::1424380312 -22::82::1::1424380312 -22::84::1::1424380312 -22::86::1::1424380312 -22::87::3::1424380312 -22::88::5::1424380312 -22::90::2::1424380312 -22::92::3::1424380312 -22::95::2::1424380312 -22::96::2::1424380312 -22::98::4::1424380312 -22::99::1::1424380312 -23::0::1::1424380312 -23::2::1::1424380312 -23::4::1::1424380312 -23::6::2::1424380312 -23::10::4::1424380312 -23::12::1::1424380312 -23::13::4::1424380312 -23::14::1::1424380312 -23::15::1::1424380312 -23::18::4::1424380312 -23::22::2::1424380312 -23::23::4::1424380312 -23::24::1::1424380312 -23::25::1::1424380312 -23::26::1::1424380312 -23::27::5::1424380312 -23::28::1::1424380312 -23::29::1::1424380312 -23::30::4::1424380312 -23::32::5::1424380312 -23::33::2::1424380312 -23::36::3::1424380312 -23::37::1::1424380312 -23::38::1::1424380312 -23::39::1::1424380312 -23::43::1::1424380312 -23::48::5::1424380312 -23::49::5::1424380312 -23::50::4::1424380312 -23::53::1::1424380312 -23::55::5::1424380312 -23::57::1::1424380312 -23::59::1::1424380312 -23::60::1::1424380312 -23::61::1::1424380312 -23::64::4::1424380312 -23::65::5::1424380312 -23::66::2::1424380312 -23::67::1::1424380312 -23::68::3::1424380312 -23::69::1::1424380312 -23::72::1::1424380312 -23::73::3::1424380312 -23::77::1::1424380312 -23::82::2::1424380312 -23::83::1::1424380312 -23::84::1::1424380312 -23::85::1::1424380312 -23::87::3::1424380312 -23::88::1::1424380312 -23::95::2::1424380312 -23::97::1::1424380312 -24::4::1::1424380312 -24::6::3::1424380312 -24::7::1::1424380312 -24::10::2::1424380312 -24::12::1::1424380312 -24::15::1::1424380312 -24::19::1::1424380312 -24::24::1::1424380312 -24::27::3::1424380312 -24::30::5::1424380312 -24::31::1::1424380312 -24::32::3::1424380312 -24::33::1::1424380312 -24::37::1::1424380312 -24::39::1::1424380312 -24::40::1::1424380312 -24::42::1::1424380312 -24::43::3::1424380312 -24::45::2::1424380312 -24::46::1::1424380312 -24::47::1::1424380312 -24::48::1::1424380312 -24::49::1::1424380312 -24::50::1::1424380312 -24::52::5::1424380312 -24::57::1::1424380312 -24::59::4::1424380312 -24::63::4::1424380312 -24::65::1::1424380312 -24::66::1::1424380312 -24::67::1::1424380312 -24::68::3::1424380312 -24::69::5::1424380312 -24::71::1::1424380312 -24::72::4::1424380312 -24::77::4::1424380312 -24::78::1::1424380312 -24::80::1::1424380312 -24::82::1::1424380312 -24::84::1::1424380312 -24::86::1::1424380312 -24::87::1::1424380312 -24::88::2::1424380312 -24::89::1::1424380312 -24::90::5::1424380312 -24::91::1::1424380312 -24::92::1::1424380312 -24::94::2::1424380312 -24::95::1::1424380312 -24::96::5::1424380312 -24::98::1::1424380312 -24::99::1::1424380312 -25::1::3::1424380312 -25::2::1::1424380312 -25::7::1::1424380312 -25::9::1::1424380312 -25::12::3::1424380312 -25::16::3::1424380312 -25::17::1::1424380312 -25::18::1::1424380312 -25::20::1::1424380312 -25::22::1::1424380312 -25::23::1::1424380312 -25::26::2::1424380312 -25::29::1::1424380312 -25::30::1::1424380312 -25::31::2::1424380312 -25::33::4::1424380312 -25::34::3::1424380312 -25::35::2::1424380312 -25::36::1::1424380312 -25::37::1::1424380312 -25::40::1::1424380312 -25::41::1::1424380312 -25::43::1::1424380312 -25::47::4::1424380312 -25::50::1::1424380312 -25::51::1::1424380312 -25::53::1::1424380312 -25::56::1::1424380312 -25::58::2::1424380312 -25::64::2::1424380312 -25::67::2::1424380312 -25::68::1::1424380312 -25::70::1::1424380312 -25::71::4::1424380312 -25::73::1::1424380312 -25::74::1::1424380312 -25::76::1::1424380312 -25::79::1::1424380312 -25::82::1::1424380312 -25::84::2::1424380312 -25::85::1::1424380312 -25::91::3::1424380312 -25::92::1::1424380312 -25::94::1::1424380312 -25::95::1::1424380312 -25::97::2::1424380312 -26::0::1::1424380312 -26::1::1::1424380312 -26::2::1::1424380312 -26::3::1::1424380312 -26::4::4::1424380312 -26::5::2::1424380312 -26::6::3::1424380312 -26::7::5::1424380312 -26::13::3::1424380312 -26::14::1::1424380312 -26::16::1::1424380312 -26::18::3::1424380312 -26::20::1::1424380312 -26::21::3::1424380312 -26::22::5::1424380312 -26::23::5::1424380312 -26::24::5::1424380312 -26::27::1::1424380312 -26::31::1::1424380312 -26::35::1::1424380312 -26::36::4::1424380312 -26::40::1::1424380312 -26::44::1::1424380312 -26::45::2::1424380312 -26::47::1::1424380312 -26::48::1::1424380312 -26::49::3::1424380312 -26::50::2::1424380312 -26::52::1::1424380312 -26::54::4::1424380312 -26::55::1::1424380312 -26::57::3::1424380312 -26::58::1::1424380312 -26::61::1::1424380312 -26::62::2::1424380312 -26::66::1::1424380312 -26::68::4::1424380312 -26::71::1::1424380312 -26::73::4::1424380312 -26::76::1::1424380312 -26::81::3::1424380312 -26::85::1::1424380312 -26::86::3::1424380312 -26::88::5::1424380312 -26::91::1::1424380312 -26::94::5::1424380312 -26::95::1::1424380312 -26::96::1::1424380312 -26::97::1::1424380312 -27::0::1::1424380312 -27::9::1::1424380312 -27::10::1::1424380312 -27::18::4::1424380312 -27::19::3::1424380312 -27::20::1::1424380312 -27::22::2::1424380312 -27::24::2::1424380312 -27::25::1::1424380312 -27::27::3::1424380312 -27::28::1::1424380312 -27::29::1::1424380312 -27::31::1::1424380312 -27::33::3::1424380312 -27::40::1::1424380312 -27::42::1::1424380312 -27::43::1::1424380312 -27::44::3::1424380312 -27::45::1::1424380312 -27::51::3::1424380312 -27::52::1::1424380312 -27::55::3::1424380312 -27::57::1::1424380312 -27::59::1::1424380312 -27::60::1::1424380312 -27::61::1::1424380312 -27::64::1::1424380312 -27::66::3::1424380312 -27::68::1::1424380312 -27::70::1::1424380312 -27::71::2::1424380312 -27::72::1::1424380312 -27::75::3::1424380312 -27::78::1::1424380312 -27::80::3::1424380312 -27::82::1::1424380312 -27::83::3::1424380312 -27::86::1::1424380312 -27::87::2::1424380312 -27::90::1::1424380312 -27::91::1::1424380312 -27::92::1::1424380312 -27::93::1::1424380312 -27::94::2::1424380312 -27::95::1::1424380312 -27::98::1::1424380312 -28::0::3::1424380312 -28::1::1::1424380312 -28::2::4::1424380312 -28::3::1::1424380312 -28::6::1::1424380312 -28::7::1::1424380312 -28::12::5::1424380312 -28::13::2::1424380312 -28::14::1::1424380312 -28::15::1::1424380312 -28::17::1::1424380312 -28::19::3::1424380312 -28::20::1::1424380312 -28::23::3::1424380312 -28::24::3::1424380312 -28::27::1::1424380312 -28::29::1::1424380312 -28::33::1::1424380312 -28::34::1::1424380312 -28::36::1::1424380312 -28::38::2::1424380312 -28::39::2::1424380312 -28::44::1::1424380312 -28::45::1::1424380312 -28::49::4::1424380312 -28::50::1::1424380312 -28::52::1::1424380312 -28::54::1::1424380312 -28::56::1::1424380312 -28::57::3::1424380312 -28::58::1::1424380312 -28::59::1::1424380312 -28::60::1::1424380312 -28::62::3::1424380312 -28::63::1::1424380312 -28::65::1::1424380312 -28::75::1::1424380312 -28::78::1::1424380312 -28::81::5::1424380312 -28::82::4::1424380312 -28::83::1::1424380312 -28::85::1::1424380312 -28::88::2::1424380312 -28::89::4::1424380312 -28::90::1::1424380312 -28::92::5::1424380312 -28::94::1::1424380312 -28::95::2::1424380312 -28::98::1::1424380312 -28::99::1::1424380312 -29::3::1::1424380312 -29::4::1::1424380312 -29::5::1::1424380312 -29::7::2::1424380312 -29::9::1::1424380312 -29::10::3::1424380312 -29::11::1::1424380312 -29::13::3::1424380312 -29::14::1::1424380312 -29::15::1::1424380312 -29::17::3::1424380312 -29::19::3::1424380312 -29::22::3::1424380312 -29::23::4::1424380312 -29::25::1::1424380312 -29::29::1::1424380312 -29::31::1::1424380312 -29::32::4::1424380312 -29::33::2::1424380312 -29::36::2::1424380312 -29::38::3::1424380312 -29::39::1::1424380312 -29::42::1::1424380312 -29::46::5::1424380312 -29::49::3::1424380312 -29::51::2::1424380312 -29::59::1::1424380312 -29::61::1::1424380312 -29::62::1::1424380312 -29::67::1::1424380312 -29::68::3::1424380312 -29::69::1::1424380312 -29::70::1::1424380312 -29::74::1::1424380312 -29::75::1::1424380312 -29::79::2::1424380312 -29::80::1::1424380312 -29::81::2::1424380312 -29::83::1::1424380312 -29::85::1::1424380312 -29::86::1::1424380312 -29::90::4::1424380312 -29::93::1::1424380312 -29::94::4::1424380312 -29::97::1::1424380312 -29::99::1::1424380312 diff --git a/Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/1_Ligacao_banco_dados.ipynb b/Analise de Negocios/Aula2 - Ligacao Banco de Dados/1_Ligacao_banco_dados.ipynb similarity index 100% rename from Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/1_Ligacao_banco_dados.ipynb rename to Analise de Negocios/Aula2 - Ligacao Banco de Dados/1_Ligacao_banco_dados.ipynb diff --git a/Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/PostgreSQL-logo.png b/Analise de Negocios/Aula2 - Ligacao Banco de Dados/PostgreSQL-logo.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/PostgreSQL-logo.png rename to Analise de Negocios/Aula2 - Ligacao Banco de Dados/PostgreSQL-logo.png diff --git a/Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/anp.png b/Analise de Negocios/Aula2 - Ligacao Banco de Dados/anp.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/anp.png rename to Analise de Negocios/Aula2 - Ligacao Banco de Dados/anp.png diff --git a/Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime.png b/Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime.png rename to Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime.png diff --git a/Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime2.png b/Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime2.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime2.png rename to Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime2.png diff --git a/Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime3.png b/Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime3.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime3.png rename to Analise de Negocios/Aula2 - Ligacao Banco de Dados/knime3.png diff --git a/Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/postgre1.png b/Analise de Negocios/Aula2 - Ligacao Banco de Dados/postgre1.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/postgre1.png rename to Analise de Negocios/Aula2 - Ligacao Banco de Dados/postgre1.png diff --git a/Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/preco_combustivel.jpeg b/Analise de Negocios/Aula2 - Ligacao Banco de Dados/preco_combustivel.jpeg similarity index 100% rename from Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/preco_combustivel.jpeg rename to Analise de Negocios/Aula2 - Ligacao Banco de Dados/preco_combustivel.jpeg diff --git a/Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/tabela_base_dados.png b/Analise de Negocios/Aula2 - Ligacao Banco de Dados/tabela_base_dados.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula2 - Ligacao Banco de Dados/tabela_base_dados.png rename to Analise de Negocios/Aula2 - Ligacao Banco de Dados/tabela_base_dados.png diff --git a/Fase 4/Analise de Negocios/Aula3 - Geracao Insights/2_Geracao_Insights.ipynb b/Analise de Negocios/Aula3 - Geracao Insights/2_Geracao_Insights.ipynb similarity index 100% rename from Fase 4/Analise de Negocios/Aula3 - Geracao Insights/2_Geracao_Insights.ipynb rename to Analise de Negocios/Aula3 - Geracao Insights/2_Geracao_Insights.ipynb diff --git a/Fase 4/Analise de Negocios/Aula3 - Geracao Insights/PostgreSQL-logo.png b/Analise de Negocios/Aula3 - Geracao Insights/PostgreSQL-logo.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula3 - Geracao Insights/PostgreSQL-logo.png rename to Analise de Negocios/Aula3 - Geracao Insights/PostgreSQL-logo.png diff --git a/Fase 4/Analise de Negocios/Aula3 - Geracao Insights/anp.png b/Analise de Negocios/Aula3 - Geracao Insights/anp.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula3 - Geracao Insights/anp.png rename to Analise de Negocios/Aula3 - Geracao Insights/anp.png diff --git a/Fase 4/Analise de Negocios/Aula3 - Geracao Insights/knime.png b/Analise de Negocios/Aula3 - Geracao Insights/knime.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula3 - Geracao Insights/knime.png rename to Analise de Negocios/Aula3 - Geracao Insights/knime.png diff --git a/Fase 4/Analise de Negocios/Aula3 - Geracao Insights/knime2.png b/Analise de Negocios/Aula3 - Geracao Insights/knime2.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula3 - Geracao Insights/knime2.png rename to Analise de Negocios/Aula3 - Geracao Insights/knime2.png diff --git a/Fase 4/Analise de Negocios/Aula3 - Geracao Insights/knime3.png b/Analise de Negocios/Aula3 - Geracao Insights/knime3.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula3 - Geracao Insights/knime3.png rename to Analise de Negocios/Aula3 - Geracao Insights/knime3.png diff --git a/Fase 4/Analise de Negocios/Aula3 - Geracao Insights/postgre1.png b/Analise de Negocios/Aula3 - Geracao Insights/postgre1.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula3 - Geracao Insights/postgre1.png rename to Analise de Negocios/Aula3 - Geracao Insights/postgre1.png diff --git a/Fase 4/Analise de Negocios/Aula3 - Geracao Insights/preco_combustivel.jpeg b/Analise de Negocios/Aula3 - Geracao Insights/preco_combustivel.jpeg similarity index 100% rename from Fase 4/Analise de Negocios/Aula3 - Geracao Insights/preco_combustivel.jpeg rename to Analise de Negocios/Aula3 - Geracao Insights/preco_combustivel.jpeg diff --git a/Fase 4/Analise de Negocios/Aula3 - Geracao Insights/tabela_base_dados.png b/Analise de Negocios/Aula3 - Geracao Insights/tabela_base_dados.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula3 - Geracao Insights/tabela_base_dados.png rename to Analise de Negocios/Aula3 - Geracao Insights/tabela_base_dados.png diff --git a/Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/3_Tecnicas_Visualizacao.ipynb b/Analise de Negocios/Aula4 - Tecnicas Visualizacao/3_Tecnicas_Visualizacao.ipynb similarity index 100% rename from Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/3_Tecnicas_Visualizacao.ipynb rename to Analise de Negocios/Aula4 - Tecnicas Visualizacao/3_Tecnicas_Visualizacao.ipynb diff --git a/Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/PostgreSQL-logo.png b/Analise de Negocios/Aula4 - Tecnicas Visualizacao/PostgreSQL-logo.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/PostgreSQL-logo.png rename to Analise de Negocios/Aula4 - Tecnicas Visualizacao/PostgreSQL-logo.png diff --git a/Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/anp.png b/Analise de Negocios/Aula4 - Tecnicas Visualizacao/anp.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/anp.png rename to Analise de Negocios/Aula4 - Tecnicas Visualizacao/anp.png diff --git a/Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime.png b/Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime.png rename to Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime.png diff --git a/Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime2.png b/Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime2.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime2.png rename to Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime2.png diff --git a/Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime3.png b/Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime3.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime3.png rename to Analise de Negocios/Aula4 - Tecnicas Visualizacao/knime3.png diff --git a/Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/postgre1.png b/Analise de Negocios/Aula4 - Tecnicas Visualizacao/postgre1.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/postgre1.png rename to Analise de Negocios/Aula4 - Tecnicas Visualizacao/postgre1.png diff --git a/Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/preco_combustivel.jpeg b/Analise de Negocios/Aula4 - Tecnicas Visualizacao/preco_combustivel.jpeg similarity index 100% rename from Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/preco_combustivel.jpeg rename to Analise de Negocios/Aula4 - Tecnicas Visualizacao/preco_combustivel.jpeg diff --git a/Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/tabela_base_dados.png b/Analise de Negocios/Aula4 - Tecnicas Visualizacao/tabela_base_dados.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula4 - Tecnicas Visualizacao/tabela_base_dados.png rename to Analise de Negocios/Aula4 - Tecnicas Visualizacao/tabela_base_dados.png diff --git a/Fase 4/Analise de Negocios/Aula5 - Dashboard Storytelling/analise_negocios_fiap.pbix b/Analise de Negocios/Aula5 - Dashboard Storytelling/analise_negocios_fiap.pbix similarity index 100% rename from Fase 4/Analise de Negocios/Aula5 - Dashboard Storytelling/analise_negocios_fiap.pbix rename to Analise de Negocios/Aula5 - Dashboard Storytelling/analise_negocios_fiap.pbix diff --git a/Fase 4/Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel-fossil.png b/Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel-fossil.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel-fossil.png rename to Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel-fossil.png diff --git a/Fase 4/Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel.png b/Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel.png rename to Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel.png diff --git a/Fase 4/Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel1.png b/Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel1.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel1.png rename to Analise de Negocios/Aula5 - Dashboard Storytelling/combustivel1.png diff --git a/Fase 4/Analise de Negocios/Aula5 - Dashboard Storytelling/filtro-limpo.png b/Analise de Negocios/Aula5 - Dashboard Storytelling/filtro-limpo.png similarity index 100% rename from Fase 4/Analise de Negocios/Aula5 - Dashboard Storytelling/filtro-limpo.png rename to Analise de Negocios/Aula5 - Dashboard Storytelling/filtro-limpo.png diff --git a/LICENSE b/LICENSE deleted file mode 100644 index be2367d..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 FIAP - Faculdade de Informática e Administração Paulista - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/PySpark_Column_Operations.ipynb b/PySpark_Column_Operations.ipynb deleted file mode 100644 index 18b6cf1..0000000 --- a/PySpark_Column_Operations.ipynb +++ /dev/null @@ -1,523 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [], - "toc_visible": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "# Creating New Column in PySpark DataFrame" - ], - "metadata": { - "id": "fp0aNsCIYV4Y" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Installing Libraries" - ], - "metadata": { - "id": "lTIwmVXEYvqO" - } - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "cDM0Ro4QYPk6", - "outputId": "f8604fd9-62d7-4028-b878-22b19232e7e9" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Collecting pyspark\n", - " Downloading pyspark-3.4.1.tar.gz (310.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m310.8/310.8 MB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", - "Requirement already satisfied: py4j==0.10.9.7 in /usr/local/lib/python3.10/dist-packages (from pyspark) (0.10.9.7)\n", - "Building wheels for collected packages: pyspark\n", - " Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n", - " Created wheel for pyspark: filename=pyspark-3.4.1-py2.py3-none-any.whl size=311285398 sha256=9d5e11cdda8c083c4d6eb0805f2784034981f8e4973d28bf226c6ddba9174b07\n", - " Stored in directory: /root/.cache/pip/wheels/0d/77/a3/ff2f74cc9ab41f8f594dabf0579c2a7c6de920d584206e0834\n", - "Successfully built pyspark\n", - "Installing collected packages: pyspark\n", - "Successfully installed pyspark-3.4.1\n" - ] - } - ], - "source": [ - "!pip install pyspark" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Importing the Libraries" - ], - "metadata": { - "id": "1TZXyu1vYzEX" - } - }, - { - "cell_type": "code", - "source": [ - "from pyspark.sql import SparkSession" - ], - "metadata": { - "id": "J2RVV_40Ygnv" - }, - "execution_count": 2, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Creating Spark Session" - ], - "metadata": { - "id": "3RmGsf2WY42f" - } - }, - { - "cell_type": "code", - "source": [ - "spark = SparkSession.builder.appName('PySpark Column Ops').getOrCreate()" - ], - "metadata": { - "id": "3gN4uCH6YkY8" - }, - "execution_count": 3, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Reading the Dataset" - ], - "metadata": { - "id": "1CVP3cmxY6u7" - } - }, - { - "cell_type": "code", - "source": [ - "df = spark.read.csv('Fish.csv', sep = ',', inferSchema = True, header = True)" - ], - "metadata": { - "id": "sqAlMbX1YmpR" - }, - "execution_count": 5, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Checking the Imported Dataset" - ], - "metadata": { - "id": "06IlRwQwY8uz" - } - }, - { - "cell_type": "code", - "source": [ - "df.show()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "2t_6cc-NY-KE", - "outputId": "00bfd217-ef19-493b-c56b-184ae7777c38" - }, - "execution_count": 6, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "+-------+------+-------+-------+-------+-------+------+\n", - "|Species|Weight|Length1|Length2|Length3| Height| Width|\n", - "+-------+------+-------+-------+-------+-------+------+\n", - "| Bream| 242.0| 23.2| 25.4| 30.0| 11.52| 4.02|\n", - "| Bream| 290.0| 24.0| 26.3| 31.2| 12.48|4.3056|\n", - "| Bream| 340.0| 23.9| 26.5| 31.1|12.3778|4.6961|\n", - "| Bream| 363.0| 26.3| 29.0| 33.5| 12.73|4.4555|\n", - "| Bream| 430.0| 26.5| 29.0| 34.0| 12.444| 5.134|\n", - "| Bream| 450.0| 26.8| 29.7| 34.7|13.6024|4.9274|\n", - "| Bream| 500.0| 26.8| 29.7| 34.5|14.1795|5.2785|\n", - "| Bream| 390.0| 27.6| 30.0| 35.0| 12.67| 4.69|\n", - "| Bream| 450.0| 27.6| 30.0| 35.1|14.0049|4.8438|\n", - "| Bream| 500.0| 28.5| 30.7| 36.2|14.2266|4.9594|\n", - "| Bream| 475.0| 28.4| 31.0| 36.2|14.2628|5.1042|\n", - "| Bream| 500.0| 28.7| 31.0| 36.2|14.3714|4.8146|\n", - "| Bream| 500.0| 29.1| 31.5| 36.4|13.7592| 4.368|\n", - "| Bream| 340.0| 29.5| 32.0| 37.3|13.9129|5.0728|\n", - "| Bream| 600.0| 29.4| 32.0| 37.2|14.9544|5.1708|\n", - "| Bream| 600.0| 29.4| 32.0| 37.2| 15.438| 5.58|\n", - "| Bream| 700.0| 30.4| 33.0| 38.3|14.8604|5.2854|\n", - "| Bream| 700.0| 30.4| 33.0| 38.5| 14.938|5.1975|\n", - "| Bream| 610.0| 30.9| 33.5| 38.6| 15.633|5.1338|\n", - "| Bream| 650.0| 31.0| 33.5| 38.7|14.4738|5.7276|\n", - "+-------+------+-------+-------+-------+-------+------+\n", - "only showing top 20 rows\n", - "\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Creating a New Column" - ], - "metadata": { - "id": "fCiQ5-e6Y_uD" - } - }, - { - "cell_type": "code", - "source": [ - "df = df.withColumn('Weight in Kg', df.Weight/1000)" - ], - "metadata": { - "id": "OoRAx0zKZD0r" - }, - "execution_count": 7, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Checking the Updated DataFrame\n" - ], - "metadata": { - "id": "lhwSPTh-ZHGH" - } - }, - { - "cell_type": "code", - "source": [ - "df.show()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "1btXaw6vZJfv", - "outputId": "f0dc6e23-02e0-426c-f165-7eca346d5c95" - }, - "execution_count": 8, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "+-------+------+-------+-------+-------+-------+------+------------+\n", - "|Species|Weight|Length1|Length2|Length3| Height| Width|Weight in Kg|\n", - "+-------+------+-------+-------+-------+-------+------+------------+\n", - "| Bream| 242.0| 23.2| 25.4| 30.0| 11.52| 4.02| 0.242|\n", - "| Bream| 290.0| 24.0| 26.3| 31.2| 12.48|4.3056| 0.29|\n", - "| Bream| 340.0| 23.9| 26.5| 31.1|12.3778|4.6961| 0.34|\n", - "| Bream| 363.0| 26.3| 29.0| 33.5| 12.73|4.4555| 0.363|\n", - "| Bream| 430.0| 26.5| 29.0| 34.0| 12.444| 5.134| 0.43|\n", - "| Bream| 450.0| 26.8| 29.7| 34.7|13.6024|4.9274| 0.45|\n", - "| Bream| 500.0| 26.8| 29.7| 34.5|14.1795|5.2785| 0.5|\n", - "| Bream| 390.0| 27.6| 30.0| 35.0| 12.67| 4.69| 0.39|\n", - "| Bream| 450.0| 27.6| 30.0| 35.1|14.0049|4.8438| 0.45|\n", - "| Bream| 500.0| 28.5| 30.7| 36.2|14.2266|4.9594| 0.5|\n", - "| Bream| 475.0| 28.4| 31.0| 36.2|14.2628|5.1042| 0.475|\n", - "| Bream| 500.0| 28.7| 31.0| 36.2|14.3714|4.8146| 0.5|\n", - "| Bream| 500.0| 29.1| 31.5| 36.4|13.7592| 4.368| 0.5|\n", - "| Bream| 340.0| 29.5| 32.0| 37.3|13.9129|5.0728| 0.34|\n", - "| Bream| 600.0| 29.4| 32.0| 37.2|14.9544|5.1708| 0.6|\n", - "| Bream| 600.0| 29.4| 32.0| 37.2| 15.438| 5.58| 0.6|\n", - "| Bream| 700.0| 30.4| 33.0| 38.3|14.8604|5.2854| 0.7|\n", - "| Bream| 700.0| 30.4| 33.0| 38.5| 14.938|5.1975| 0.7|\n", - "| Bream| 610.0| 30.9| 33.5| 38.6| 15.633|5.1338| 0.61|\n", - "| Bream| 650.0| 31.0| 33.5| 38.7|14.4738|5.7276| 0.65|\n", - "+-------+------+-------+-------+-------+-------+------+------------+\n", - "only showing top 20 rows\n", - "\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "# Renaming an Existing Column in PySpark DataFrame\n" - ], - "metadata": { - "id": "4N0umJ_BZLz3" - } - }, - { - "cell_type": "markdown", - "source": [ - "# Checking the Current PySpark DataFrame" - ], - "metadata": { - "id": "vrEzPB7IZORL" - } - }, - { - "cell_type": "code", - "source": [ - "df.show()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "DqYVlcNUZN7p", - "outputId": "7103be5a-8881-40c3-e3aa-e3e8e0fe7705" - }, - "execution_count": 9, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "+-------+------+-------+-------+-------+-------+------+------------+\n", - "|Species|Weight|Length1|Length2|Length3| Height| Width|Weight in Kg|\n", - "+-------+------+-------+-------+-------+-------+------+------------+\n", - "| Bream| 242.0| 23.2| 25.4| 30.0| 11.52| 4.02| 0.242|\n", - "| Bream| 290.0| 24.0| 26.3| 31.2| 12.48|4.3056| 0.29|\n", - "| Bream| 340.0| 23.9| 26.5| 31.1|12.3778|4.6961| 0.34|\n", - "| Bream| 363.0| 26.3| 29.0| 33.5| 12.73|4.4555| 0.363|\n", - "| Bream| 430.0| 26.5| 29.0| 34.0| 12.444| 5.134| 0.43|\n", - "| Bream| 450.0| 26.8| 29.7| 34.7|13.6024|4.9274| 0.45|\n", - "| Bream| 500.0| 26.8| 29.7| 34.5|14.1795|5.2785| 0.5|\n", - "| Bream| 390.0| 27.6| 30.0| 35.0| 12.67| 4.69| 0.39|\n", - "| Bream| 450.0| 27.6| 30.0| 35.1|14.0049|4.8438| 0.45|\n", - "| Bream| 500.0| 28.5| 30.7| 36.2|14.2266|4.9594| 0.5|\n", - "| Bream| 475.0| 28.4| 31.0| 36.2|14.2628|5.1042| 0.475|\n", - "| Bream| 500.0| 28.7| 31.0| 36.2|14.3714|4.8146| 0.5|\n", - "| Bream| 500.0| 29.1| 31.5| 36.4|13.7592| 4.368| 0.5|\n", - "| Bream| 340.0| 29.5| 32.0| 37.3|13.9129|5.0728| 0.34|\n", - "| Bream| 600.0| 29.4| 32.0| 37.2|14.9544|5.1708| 0.6|\n", - "| Bream| 600.0| 29.4| 32.0| 37.2| 15.438| 5.58| 0.6|\n", - "| Bream| 700.0| 30.4| 33.0| 38.3|14.8604|5.2854| 0.7|\n", - "| Bream| 700.0| 30.4| 33.0| 38.5| 14.938|5.1975| 0.7|\n", - "| Bream| 610.0| 30.9| 33.5| 38.6| 15.633|5.1338| 0.61|\n", - "| Bream| 650.0| 31.0| 33.5| 38.7|14.4738|5.7276| 0.65|\n", - "+-------+------+-------+-------+-------+-------+------+------------+\n", - "only showing top 20 rows\n", - "\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Renaming the Column\n" - ], - "metadata": { - "id": "zjHt7IsIZS1A" - } - }, - { - "cell_type": "code", - "source": [ - "df = df.withColumnRenamed(\"Weight in Kg\", \"Weight in Kilograms\")" - ], - "metadata": { - "id": "vZDmqdEFZWOV" - }, - "execution_count": 17, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Checking the updated PySpark DataFrame" - ], - "metadata": { - "id": "DIQa3FRBZYGb" - } - }, - { - "cell_type": "code", - "source": [ - "df.show()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "c_UHQ8XWZiVF", - "outputId": "b087cb0b-681e-4ac5-91aa-b8e32435c428" - }, - "execution_count": 11, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "+-------+------+-------+-------+-------+-------+------+-------------------+\n", - "|Species|Weight|Length1|Length2|Length3| Height| Width|Weight in Kilograms|\n", - "+-------+------+-------+-------+-------+-------+------+-------------------+\n", - "| Bream| 242.0| 23.2| 25.4| 30.0| 11.52| 4.02| 0.242|\n", - "| Bream| 290.0| 24.0| 26.3| 31.2| 12.48|4.3056| 0.29|\n", - "| Bream| 340.0| 23.9| 26.5| 31.1|12.3778|4.6961| 0.34|\n", - "| Bream| 363.0| 26.3| 29.0| 33.5| 12.73|4.4555| 0.363|\n", - "| Bream| 430.0| 26.5| 29.0| 34.0| 12.444| 5.134| 0.43|\n", - "| Bream| 450.0| 26.8| 29.7| 34.7|13.6024|4.9274| 0.45|\n", - "| Bream| 500.0| 26.8| 29.7| 34.5|14.1795|5.2785| 0.5|\n", - "| Bream| 390.0| 27.6| 30.0| 35.0| 12.67| 4.69| 0.39|\n", - "| Bream| 450.0| 27.6| 30.0| 35.1|14.0049|4.8438| 0.45|\n", - "| Bream| 500.0| 28.5| 30.7| 36.2|14.2266|4.9594| 0.5|\n", - "| Bream| 475.0| 28.4| 31.0| 36.2|14.2628|5.1042| 0.475|\n", - "| Bream| 500.0| 28.7| 31.0| 36.2|14.3714|4.8146| 0.5|\n", - "| Bream| 500.0| 29.1| 31.5| 36.4|13.7592| 4.368| 0.5|\n", - "| Bream| 340.0| 29.5| 32.0| 37.3|13.9129|5.0728| 0.34|\n", - "| Bream| 600.0| 29.4| 32.0| 37.2|14.9544|5.1708| 0.6|\n", - "| Bream| 600.0| 29.4| 32.0| 37.2| 15.438| 5.58| 0.6|\n", - "| Bream| 700.0| 30.4| 33.0| 38.3|14.8604|5.2854| 0.7|\n", - "| Bream| 700.0| 30.4| 33.0| 38.5| 14.938|5.1975| 0.7|\n", - "| Bream| 610.0| 30.9| 33.5| 38.6| 15.633|5.1338| 0.61|\n", - "| Bream| 650.0| 31.0| 33.5| 38.7|14.4738|5.7276| 0.65|\n", - "+-------+------+-------+-------+-------+-------+------+-------------------+\n", - "only showing top 20 rows\n", - "\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "# Creating a Column Alias in PySpark DataFrame" - ], - "metadata": { - "id": "fs6mwFAUZkrz" - } - }, - { - "cell_type": "code", - "source": [ - "df.show()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "HGG4KSgNZmnZ", - "outputId": "c8156606-03a5-47d8-ead6-14fbb9f6db48" - }, - "execution_count": 12, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "+-------+------+-------+-------+-------+-------+------+-------------------+\n", - "|Species|Weight|Length1|Length2|Length3| Height| Width|Weight in Kilograms|\n", - "+-------+------+-------+-------+-------+-------+------+-------------------+\n", - "| Bream| 242.0| 23.2| 25.4| 30.0| 11.52| 4.02| 0.242|\n", - "| Bream| 290.0| 24.0| 26.3| 31.2| 12.48|4.3056| 0.29|\n", - "| Bream| 340.0| 23.9| 26.5| 31.1|12.3778|4.6961| 0.34|\n", - "| Bream| 363.0| 26.3| 29.0| 33.5| 12.73|4.4555| 0.363|\n", - "| Bream| 430.0| 26.5| 29.0| 34.0| 12.444| 5.134| 0.43|\n", - "| Bream| 450.0| 26.8| 29.7| 34.7|13.6024|4.9274| 0.45|\n", - "| Bream| 500.0| 26.8| 29.7| 34.5|14.1795|5.2785| 0.5|\n", - "| Bream| 390.0| 27.6| 30.0| 35.0| 12.67| 4.69| 0.39|\n", - "| Bream| 450.0| 27.6| 30.0| 35.1|14.0049|4.8438| 0.45|\n", - "| Bream| 500.0| 28.5| 30.7| 36.2|14.2266|4.9594| 0.5|\n", - "| Bream| 475.0| 28.4| 31.0| 36.2|14.2628|5.1042| 0.475|\n", - "| Bream| 500.0| 28.7| 31.0| 36.2|14.3714|4.8146| 0.5|\n", - "| Bream| 500.0| 29.1| 31.5| 36.4|13.7592| 4.368| 0.5|\n", - "| Bream| 340.0| 29.5| 32.0| 37.3|13.9129|5.0728| 0.34|\n", - "| Bream| 600.0| 29.4| 32.0| 37.2|14.9544|5.1708| 0.6|\n", - "| Bream| 600.0| 29.4| 32.0| 37.2| 15.438| 5.58| 0.6|\n", - "| Bream| 700.0| 30.4| 33.0| 38.3|14.8604|5.2854| 0.7|\n", - "| Bream| 700.0| 30.4| 33.0| 38.5| 14.938|5.1975| 0.7|\n", - "| Bream| 610.0| 30.9| 33.5| 38.6| 15.633|5.1338| 0.61|\n", - "| Bream| 650.0| 31.0| 33.5| 38.7|14.4738|5.7276| 0.65|\n", - "+-------+------+-------+-------+-------+-------+------+-------------------+\n", - "only showing top 20 rows\n", - "\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Creating Column Column Alias\n", - "\n" - ], - "metadata": { - "id": "HfDsR4q4aAzS" - } - }, - { - "cell_type": "code", - "source": [ - "df.select(df['Weight in Kilograms'].alias(\"Kilograms\")).show()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "ohVBLfInaC0J", - "outputId": "e42cbe8c-359f-403e-abed-0e23c793e4d0" - }, - "execution_count": 16, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "+---------+\n", - "|Kilograms|\n", - "+---------+\n", - "| 0.242|\n", - "| 0.29|\n", - "| 0.34|\n", - "| 0.363|\n", - "| 0.43|\n", - "| 0.45|\n", - "| 0.5|\n", - "| 0.39|\n", - "| 0.45|\n", - "| 0.5|\n", - "| 0.475|\n", - "| 0.5|\n", - "| 0.5|\n", - "| 0.34|\n", - "| 0.6|\n", - "| 0.6|\n", - "| 0.7|\n", - "| 0.7|\n", - "| 0.61|\n", - "| 0.65|\n", - "+---------+\n", - "only showing top 20 rows\n", - "\n" - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/PySpark_DataManipulation.ipynb b/PySpark_DataManipulation.ipynb deleted file mode 100644 index 254a32f..0000000 --- a/PySpark_DataManipulation.ipynb +++ /dev/null @@ -1,1032 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "lihDEjAhyqca" - }, - "source": [ - "# Spark 101 - Data Manipulation using Spark\n", - "