diff --git a/module-1/lab-resolving-git-conflicts/git-conflict.png b/module-1/lab-resolving-git-conflicts/git-conflict.png deleted file mode 100755 index 640ba5c..0000000 Binary files a/module-1/lab-resolving-git-conflicts/git-conflict.png and /dev/null differ diff --git a/module-1/lab-resolving-git-conflicts/your-code/about-me.md b/module-1/lab-resolving-git-conflicts/your-code/about-me.md index 30a999d..f4fc47d 100755 --- a/module-1/lab-resolving-git-conflicts/your-code/about-me.md +++ b/module-1/lab-resolving-git-conflicts/your-code/about-me.md @@ -5,3 +5,4 @@ Ut porttitor iaculis tellus bibendum euismod. Morbi porta, ante nec tempus porta Suspendisse ut malesuada ex. Nulla ultricies nisl et nisi rhoncus sollicitudin. Vestibulum maximus iaculis ligula, nec commodo nunc ullamcorper nec. Duis quis condimentum sapien. Cras vestibulum interdum felis eu auctor. Quisque semper, magna at dapibus faucibus, felis risus semper ligula, id aliquam lectus ligula vel nisi. In hac habitasse platea dictumst. Donec arcu sapien, suscipit ac dictum et, imperdiet id tortor. Maecenas ornare sodales interdum. Mauris dictum felis eu eros vestibulum cursus. Phasellus accumsan, turpis ut malesuada sollicitudin, augue leo venenatis ante, vel convallis tellus diam sit amet lacus. Aenean eu mauris eros. Praesent ante lacus, gravida sit amet tellus nec, laoreet ultrices lacus. Integer commodo semper vestibulum. Fusce felis massa, consectetur facilisis rutrum nec, pulvinar et nisi. Morbi fermentum ultricies tortor, vehicula ultrices eros elementum a. Duis ornare aliquam facilisis. Proin aliquam tincidunt odio vitae dignissim. Sed malesuada lacinia massa, nec blandit urna auctor elementum. Duis auctor non tortor in consequat. Mauris id vestibulum risus. In eget erat sed lacus efficitur viverra sed eu est. Aliquam interdum consequat molestie. Aliquam metus nisi, blandit non semper ut, blandit vel leo. Cras dictum turpis erat, sed iaculis ligula facilisis dapibus. Aliquam posuere dignissim fermentum. Praesent at neque sit amet lectus ornare iaculis. Curabitur id urna quis lorem varius ultrices eu sit amet sapien. Curabitur maximus volutpat suscipit. Proin imperdiet elementum lacus a eleifend. Sed tempor lacus posuere diam vehicula iaculis. +hola lalalala diff --git a/module-1/lab-resolving-git-conflicts/your-code/conflicto.png b/module-1/lab-resolving-git-conflicts/your-code/conflicto.png new file mode 100644 index 0000000..70ead67 Binary files /dev/null and b/module-1/lab-resolving-git-conflicts/your-code/conflicto.png differ diff --git a/module-2/python-bi-project/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/module-2/python-bi-project/.ipynb_checkpoints/Untitled-checkpoint.ipynb new file mode 100644 index 0000000..fe57539 --- /dev/null +++ b/module-2/python-bi-project/.ipynb_checkpoints/Untitled-checkpoint.ipynb @@ -0,0 +1,1024 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pymongo\n", + "import numpy as np\n", + "import pandas as pd\n", + "from pymongo import MongoClient\n", + "from pandas.io.json import json_normalize\n", + "import folium\n", + "import folium\n", + "from folium import plugins" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "cliente=pymongo.MongoClient('mongodb://localhost:27017')\n", + "db=cliente.Companies" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "paris = db.Companies.find({'$and':[{'offices.city': 'Paris'},{'category_code': 'games_video'},{'offices.latitude':{'$gte':1}},{'offices.longitude':{'$gte':1}}]},\\\n", + " {'name':1, 'offices.city':1, '_id':0, 'offices.latitude':1, 'offices.longitude':1})" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "paris" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nameoffices
0Kewego[{'city': 'Paris', 'latitude': 46.227638, 'lon...
1YOOWALK[{'city': 'Paris', 'latitude': 48.8475487, 'lo...
2Wevod[{'city': 'Paris', 'latitude': 48.846726, 'lon...
3Wevod[{'city': 'Paris', 'latitude': 48.846726, 'lon...
4deltatre[{'city': 'Torino', 'latitude': 45.058576, 'lo...
5Awdio[{'city': 'Paris', 'latitude': 48.887534, 'lon...
6Citizenside[{'city': 'Paris', 'latitude': 48.8926988, 'lo...
7Vibeex[{'city': 'Paris', 'latitude': 48.8566667, 'lo...
8Owlient[{'city': 'Paris', 'latitude': 48.8308091, 'lo...
9Preview Networks[{'city': 'Copenhagen', 'latitude': 55.6659813...
10Mediastroika[{'city': 'Paris', 'latitude': 48.8557544, 'lo...
112 Minutes[{'city': 'Paris', 'latitude': 48.8502056, 'lo...
12BetKlub[{'city': 'Paris', 'latitude': 48.8787606, 'lo...
\n", + "
" + ], + "text/plain": [ + " name offices\n", + "0 Kewego [{'city': 'Paris', 'latitude': 46.227638, 'lon...\n", + "1 YOOWALK [{'city': 'Paris', 'latitude': 48.8475487, 'lo...\n", + "2 Wevod [{'city': 'Paris', 'latitude': 48.846726, 'lon...\n", + "3 Wevod [{'city': 'Paris', 'latitude': 48.846726, 'lon...\n", + "4 deltatre [{'city': 'Torino', 'latitude': 45.058576, 'lo...\n", + "5 Awdio [{'city': 'Paris', 'latitude': 48.887534, 'lon...\n", + "6 Citizenside [{'city': 'Paris', 'latitude': 48.8926988, 'lo...\n", + "7 Vibeex [{'city': 'Paris', 'latitude': 48.8566667, 'lo...\n", + "8 Owlient [{'city': 'Paris', 'latitude': 48.8308091, 'lo...\n", + "9 Preview Networks [{'city': 'Copenhagen', 'latitude': 55.6659813...\n", + "10 Mediastroika [{'city': 'Paris', 'latitude': 48.8557544, 'lo...\n", + "11 2 Minutes [{'city': 'Paris', 'latitude': 48.8502056, 'lo...\n", + "12 BetKlub [{'city': 'Paris', 'latitude': 48.8787606, 'lo..." + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1=pd.DataFrame(paris)\n", + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "df1=df1.dropna()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/lib/python3/dist-packages/ipykernel_launcher.py:3: FutureWarning: pandas.io.json.json_normalize is deprecated, use pandas.json_normalize instead\n", + " This is separate from the ipykernel package so we can avoid doing imports until\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
citylatitudelongitude
0Paris46.2276382.213749
1Paris48.8475492.299235
2Paris48.8467262.321213
3Paris48.8467262.321213
4Torino45.0585767.649614
5LondonNaNNaN
6LausanneNaNNaN
7ParisNaNNaN
8New YorkNaNNaN
9Paris48.8875342.356288
10Paris48.8926992.317960
11Paris48.8566672.350987
12Paris48.8308092.303220
13Copenhagen55.66598112.580075
14LondonNaNNaN
15BerlinNaNNaN
16ParisNaNNaN
17MilanNaNNaN
18StockholmNaNNaN
19Paris48.8557542.380833
20Paris48.8502062.369803
21Paris48.8787612.363917
\n", + "
" + ], + "text/plain": [ + " city latitude longitude\n", + "0 Paris 46.227638 2.213749\n", + "1 Paris 48.847549 2.299235\n", + "2 Paris 48.846726 2.321213\n", + "3 Paris 48.846726 2.321213\n", + "4 Torino 45.058576 7.649614\n", + "5 London NaN NaN\n", + "6 Lausanne NaN NaN\n", + "7 Paris NaN NaN\n", + "8 New York NaN NaN\n", + "9 Paris 48.887534 2.356288\n", + "10 Paris 48.892699 2.317960\n", + "11 Paris 48.856667 2.350987\n", + "12 Paris 48.830809 2.303220\n", + "13 Copenhagen 55.665981 12.580075\n", + "14 London NaN NaN\n", + "15 Berlin NaN NaN\n", + "16 Paris NaN NaN\n", + "17 Milan NaN NaN\n", + "18 Stockholm NaN NaN\n", + "19 Paris 48.855754 2.380833\n", + "20 Paris 48.850206 2.369803\n", + "21 Paris 48.878761 2.363917" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dfll=pd.DataFrame()\n", + "for i in range(13):\n", + " dfll=dfll.append(json_normalize(df1.offices[i]), ignore_index=True)\n", + "\n", + " \n", + "dfll" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "df=pd.concat([df1, dfll], axis=1).drop(columns=['offices'])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecitylatitudelongitude
0KewegoParis46.2276382.213749
1YOOWALKParis48.8475492.299235
2WevodParis48.8467262.321213
3WevodParis48.8467262.321213
4deltatreTorino45.0585767.649614
5AwdioLondonNaNNaN
6CitizensideLausanneNaNNaN
7VibeexParisNaNNaN
8OwlientNew YorkNaNNaN
9Preview NetworksParis48.8875342.356288
10MediastroikaParis48.8926992.317960
112 MinutesParis48.8566672.350987
12BetKlubParis48.8308092.303220
13NaNCopenhagen55.66598112.580075
14NaNLondonNaNNaN
15NaNBerlinNaNNaN
16NaNParisNaNNaN
17NaNMilanNaNNaN
18NaNStockholmNaNNaN
19NaNParis48.8557542.380833
20NaNParis48.8502062.369803
21NaNParis48.8787612.363917
\n", + "
" + ], + "text/plain": [ + " name city latitude longitude\n", + "0 Kewego Paris 46.227638 2.213749\n", + "1 YOOWALK Paris 48.847549 2.299235\n", + "2 Wevod Paris 48.846726 2.321213\n", + "3 Wevod Paris 48.846726 2.321213\n", + "4 deltatre Torino 45.058576 7.649614\n", + "5 Awdio London NaN NaN\n", + "6 Citizenside Lausanne NaN NaN\n", + "7 Vibeex Paris NaN NaN\n", + "8 Owlient New York NaN NaN\n", + "9 Preview Networks Paris 48.887534 2.356288\n", + "10 Mediastroika Paris 48.892699 2.317960\n", + "11 2 Minutes Paris 48.856667 2.350987\n", + "12 BetKlub Paris 48.830809 2.303220\n", + "13 NaN Copenhagen 55.665981 12.580075\n", + "14 NaN London NaN NaN\n", + "15 NaN Berlin NaN NaN\n", + "16 NaN Paris NaN NaN\n", + "17 NaN Milan NaN NaN\n", + "18 NaN Stockholm NaN NaN\n", + "19 NaN Paris 48.855754 2.380833\n", + "20 NaN Paris 48.850206 2.369803\n", + "21 NaN Paris 48.878761 2.363917" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "df=df.drop([4,5,6,7,8,13,14,15,16,17,18])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecitylatitudelongitude
0KewegoParis46.2276382.213749
1YOOWALKParis48.8475492.299235
2WevodParis48.8467262.321213
3WevodParis48.8467262.321213
4Preview NetworksParis48.8875342.356288
5MediastroikaParis48.8926992.317960
62 MinutesParis48.8566672.350987
7BetKlubParis48.8308092.303220
8NaNParis48.8557542.380833
9NaNParis48.8502062.369803
10NaNParis48.8787612.363917
\n", + "
" + ], + "text/plain": [ + " name city latitude longitude\n", + "0 Kewego Paris 46.227638 2.213749\n", + "1 YOOWALK Paris 48.847549 2.299235\n", + "2 Wevod Paris 48.846726 2.321213\n", + "3 Wevod Paris 48.846726 2.321213\n", + "4 Preview Networks Paris 48.887534 2.356288\n", + "5 Mediastroika Paris 48.892699 2.317960\n", + "6 2 Minutes Paris 48.856667 2.350987\n", + "7 BetKlub Paris 48.830809 2.303220\n", + "8 NaN Paris 48.855754 2.380833\n", + "9 NaN Paris 48.850206 2.369803\n", + "10 NaN Paris 48.878761 2.363917" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "df.to_json('paris_gaming.json') " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db.df.insert_many(df.to_dict('records'))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db.df1.insert_many(df1.to_dict('records'))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "df1.to_json('eu_gaming.json') " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "paris2 = db.Companies.find({'$and':[{'offices.city': 'Paris'},{'category_code': 'games_video'},{'offices.latitude':{'$gte':1}},{'offices.longitude':{'$gte':1}}]},\\\n", + " {'name':1, 'offices.city':0, '_id':0, 'offices.latitude':1, 'offices.longitude':1})" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'paris2_2dsphere'" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db.df1.create_index([('paris2', '2dsphere')])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "#help(folium.Icon)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = folium.Map(\n", + " location=[48.8032, 2.3511],\n", + " zoom_start=10,\n", + " tiles='Stamen Terrain'\n", + ")\n", + "\n", + "folium.Marker(\n", + " location=[48.8582602, 2.29449905431968],\n", + " popup='Eiffel Tower',\n", + " icon=folium.Icon(icon='glass')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[49.009724, 2.547778],\n", + " popup='Airport',\n", + " icon=folium.Icon(icon='cloud')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[46.227638, 2.213749],\n", + " popup='Kewego',\n", + " icon=folium.Icon(color='red')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.847549, 2.299235],\n", + " popup='YOOWALK',\n", + " icon=folium.Icon(color='green')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.846726, 2.321213],\n", + " popup='Wevod',\n", + " icon=folium.Icon(color='green')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.887534, 2.356288],\n", + " popup='Preview Networks',\n", + " icon=folium.Icon(color='green', icon='info-sign')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.892699, 2.317960],\n", + " popup='Mediastroika',\n", + " icon=folium.Icon(color='green', icon='info-sign')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.856667, 2.350987],\n", + " popup='2 Minutes',\n", + " icon=folium.Icon(color='green', icon='info-sign')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.855754, 2.380833],\n", + " popup='BetKlub',\n", + " icon=folium.Icon(color='green', icon='info-sign')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.850206, 2.369803],\n", + " popup='Unkown',\n", + " icon=folium.Icon(color='red', icon='info-sign')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.878761, 2.363917],\n", + " popup='Unkown',\n", + " icon=folium.Icon(color='red')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.8584, 2.3024],\n", + " popup='Dream Office',\n", + " icon=folium.Icon(color='cadetblue', icon='star')\n", + ").add_to(m)\n", + "\n", + "m.save('gaming_office.html')\n", + "\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/module-2/python-bi-project/README(project).md b/module-2/python-bi-project/README(project).md new file mode 100644 index 0000000..8aaa116 --- /dev/null +++ b/module-2/python-bi-project/README(project).md @@ -0,0 +1,49 @@ +![Paris](https://www.riotgames.com/darkroom/1440/b2b587d91d3c5d2922953ac62fbb2cb8:dfd0d5c2d07f981fb8cda29623b5e54e/paris.jpg) + +# Project: Business Intelligence with Python + +## Overview + +This project needed 5 steps to be done: + + * Step 1 **Define our client** + + * Step 2 **Select querys trough pymongo using the companies database** + + * Step 3 **Transform data to a dataframe** + + * Step 4 **Create new collection using 2dsphere** + + * Step 5 **Show trough maps and geoquerys the best place for the client** + + * Step 6 (Optional) **Add APIS or webscrapping for more data* + +## Client + + Carlos, 28 years old. CEO of a gaming companie since 2015 want to expand his bussiness to Europe and he has some requirements for his new office there. + +- It needs to be in Paris + +- It has to be near the Eiffel Tower + +- It has to be near the Sena River + +- He dont want another gaming offices near his new office + +- Optional... Close to the airport + + +## Description of map + + * Red points are gaming offices without a name + + * Green points are gamings offices + + * The cloud icon is the airport + + * The glass icon is the Eiffel Tower + + * The Star icon is the best place to stablish a new office according to our client needs. + +## Author +**David Alfredo Cisneros Diaz** diff --git a/module-2/python-bi-project/Untitled.ipynb b/module-2/python-bi-project/Untitled.ipynb new file mode 100644 index 0000000..fe57539 --- /dev/null +++ b/module-2/python-bi-project/Untitled.ipynb @@ -0,0 +1,1024 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pymongo\n", + "import numpy as np\n", + "import pandas as pd\n", + "from pymongo import MongoClient\n", + "from pandas.io.json import json_normalize\n", + "import folium\n", + "import folium\n", + "from folium import plugins" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "cliente=pymongo.MongoClient('mongodb://localhost:27017')\n", + "db=cliente.Companies" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "paris = db.Companies.find({'$and':[{'offices.city': 'Paris'},{'category_code': 'games_video'},{'offices.latitude':{'$gte':1}},{'offices.longitude':{'$gte':1}}]},\\\n", + " {'name':1, 'offices.city':1, '_id':0, 'offices.latitude':1, 'offices.longitude':1})" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "paris" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nameoffices
0Kewego[{'city': 'Paris', 'latitude': 46.227638, 'lon...
1YOOWALK[{'city': 'Paris', 'latitude': 48.8475487, 'lo...
2Wevod[{'city': 'Paris', 'latitude': 48.846726, 'lon...
3Wevod[{'city': 'Paris', 'latitude': 48.846726, 'lon...
4deltatre[{'city': 'Torino', 'latitude': 45.058576, 'lo...
5Awdio[{'city': 'Paris', 'latitude': 48.887534, 'lon...
6Citizenside[{'city': 'Paris', 'latitude': 48.8926988, 'lo...
7Vibeex[{'city': 'Paris', 'latitude': 48.8566667, 'lo...
8Owlient[{'city': 'Paris', 'latitude': 48.8308091, 'lo...
9Preview Networks[{'city': 'Copenhagen', 'latitude': 55.6659813...
10Mediastroika[{'city': 'Paris', 'latitude': 48.8557544, 'lo...
112 Minutes[{'city': 'Paris', 'latitude': 48.8502056, 'lo...
12BetKlub[{'city': 'Paris', 'latitude': 48.8787606, 'lo...
\n", + "
" + ], + "text/plain": [ + " name offices\n", + "0 Kewego [{'city': 'Paris', 'latitude': 46.227638, 'lon...\n", + "1 YOOWALK [{'city': 'Paris', 'latitude': 48.8475487, 'lo...\n", + "2 Wevod [{'city': 'Paris', 'latitude': 48.846726, 'lon...\n", + "3 Wevod [{'city': 'Paris', 'latitude': 48.846726, 'lon...\n", + "4 deltatre [{'city': 'Torino', 'latitude': 45.058576, 'lo...\n", + "5 Awdio [{'city': 'Paris', 'latitude': 48.887534, 'lon...\n", + "6 Citizenside [{'city': 'Paris', 'latitude': 48.8926988, 'lo...\n", + "7 Vibeex [{'city': 'Paris', 'latitude': 48.8566667, 'lo...\n", + "8 Owlient [{'city': 'Paris', 'latitude': 48.8308091, 'lo...\n", + "9 Preview Networks [{'city': 'Copenhagen', 'latitude': 55.6659813...\n", + "10 Mediastroika [{'city': 'Paris', 'latitude': 48.8557544, 'lo...\n", + "11 2 Minutes [{'city': 'Paris', 'latitude': 48.8502056, 'lo...\n", + "12 BetKlub [{'city': 'Paris', 'latitude': 48.8787606, 'lo..." + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1=pd.DataFrame(paris)\n", + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "df1=df1.dropna()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/lib/python3/dist-packages/ipykernel_launcher.py:3: FutureWarning: pandas.io.json.json_normalize is deprecated, use pandas.json_normalize instead\n", + " This is separate from the ipykernel package so we can avoid doing imports until\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
citylatitudelongitude
0Paris46.2276382.213749
1Paris48.8475492.299235
2Paris48.8467262.321213
3Paris48.8467262.321213
4Torino45.0585767.649614
5LondonNaNNaN
6LausanneNaNNaN
7ParisNaNNaN
8New YorkNaNNaN
9Paris48.8875342.356288
10Paris48.8926992.317960
11Paris48.8566672.350987
12Paris48.8308092.303220
13Copenhagen55.66598112.580075
14LondonNaNNaN
15BerlinNaNNaN
16ParisNaNNaN
17MilanNaNNaN
18StockholmNaNNaN
19Paris48.8557542.380833
20Paris48.8502062.369803
21Paris48.8787612.363917
\n", + "
" + ], + "text/plain": [ + " city latitude longitude\n", + "0 Paris 46.227638 2.213749\n", + "1 Paris 48.847549 2.299235\n", + "2 Paris 48.846726 2.321213\n", + "3 Paris 48.846726 2.321213\n", + "4 Torino 45.058576 7.649614\n", + "5 London NaN NaN\n", + "6 Lausanne NaN NaN\n", + "7 Paris NaN NaN\n", + "8 New York NaN NaN\n", + "9 Paris 48.887534 2.356288\n", + "10 Paris 48.892699 2.317960\n", + "11 Paris 48.856667 2.350987\n", + "12 Paris 48.830809 2.303220\n", + "13 Copenhagen 55.665981 12.580075\n", + "14 London NaN NaN\n", + "15 Berlin NaN NaN\n", + "16 Paris NaN NaN\n", + "17 Milan NaN NaN\n", + "18 Stockholm NaN NaN\n", + "19 Paris 48.855754 2.380833\n", + "20 Paris 48.850206 2.369803\n", + "21 Paris 48.878761 2.363917" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dfll=pd.DataFrame()\n", + "for i in range(13):\n", + " dfll=dfll.append(json_normalize(df1.offices[i]), ignore_index=True)\n", + "\n", + " \n", + "dfll" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "df=pd.concat([df1, dfll], axis=1).drop(columns=['offices'])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecitylatitudelongitude
0KewegoParis46.2276382.213749
1YOOWALKParis48.8475492.299235
2WevodParis48.8467262.321213
3WevodParis48.8467262.321213
4deltatreTorino45.0585767.649614
5AwdioLondonNaNNaN
6CitizensideLausanneNaNNaN
7VibeexParisNaNNaN
8OwlientNew YorkNaNNaN
9Preview NetworksParis48.8875342.356288
10MediastroikaParis48.8926992.317960
112 MinutesParis48.8566672.350987
12BetKlubParis48.8308092.303220
13NaNCopenhagen55.66598112.580075
14NaNLondonNaNNaN
15NaNBerlinNaNNaN
16NaNParisNaNNaN
17NaNMilanNaNNaN
18NaNStockholmNaNNaN
19NaNParis48.8557542.380833
20NaNParis48.8502062.369803
21NaNParis48.8787612.363917
\n", + "
" + ], + "text/plain": [ + " name city latitude longitude\n", + "0 Kewego Paris 46.227638 2.213749\n", + "1 YOOWALK Paris 48.847549 2.299235\n", + "2 Wevod Paris 48.846726 2.321213\n", + "3 Wevod Paris 48.846726 2.321213\n", + "4 deltatre Torino 45.058576 7.649614\n", + "5 Awdio London NaN NaN\n", + "6 Citizenside Lausanne NaN NaN\n", + "7 Vibeex Paris NaN NaN\n", + "8 Owlient New York NaN NaN\n", + "9 Preview Networks Paris 48.887534 2.356288\n", + "10 Mediastroika Paris 48.892699 2.317960\n", + "11 2 Minutes Paris 48.856667 2.350987\n", + "12 BetKlub Paris 48.830809 2.303220\n", + "13 NaN Copenhagen 55.665981 12.580075\n", + "14 NaN London NaN NaN\n", + "15 NaN Berlin NaN NaN\n", + "16 NaN Paris NaN NaN\n", + "17 NaN Milan NaN NaN\n", + "18 NaN Stockholm NaN NaN\n", + "19 NaN Paris 48.855754 2.380833\n", + "20 NaN Paris 48.850206 2.369803\n", + "21 NaN Paris 48.878761 2.363917" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "df=df.drop([4,5,6,7,8,13,14,15,16,17,18])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namecitylatitudelongitude
0KewegoParis46.2276382.213749
1YOOWALKParis48.8475492.299235
2WevodParis48.8467262.321213
3WevodParis48.8467262.321213
4Preview NetworksParis48.8875342.356288
5MediastroikaParis48.8926992.317960
62 MinutesParis48.8566672.350987
7BetKlubParis48.8308092.303220
8NaNParis48.8557542.380833
9NaNParis48.8502062.369803
10NaNParis48.8787612.363917
\n", + "
" + ], + "text/plain": [ + " name city latitude longitude\n", + "0 Kewego Paris 46.227638 2.213749\n", + "1 YOOWALK Paris 48.847549 2.299235\n", + "2 Wevod Paris 48.846726 2.321213\n", + "3 Wevod Paris 48.846726 2.321213\n", + "4 Preview Networks Paris 48.887534 2.356288\n", + "5 Mediastroika Paris 48.892699 2.317960\n", + "6 2 Minutes Paris 48.856667 2.350987\n", + "7 BetKlub Paris 48.830809 2.303220\n", + "8 NaN Paris 48.855754 2.380833\n", + "9 NaN Paris 48.850206 2.369803\n", + "10 NaN Paris 48.878761 2.363917" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "df.to_json('paris_gaming.json') " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db.df.insert_many(df.to_dict('records'))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db.df1.insert_many(df1.to_dict('records'))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "df1.to_json('eu_gaming.json') " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "paris2 = db.Companies.find({'$and':[{'offices.city': 'Paris'},{'category_code': 'games_video'},{'offices.latitude':{'$gte':1}},{'offices.longitude':{'$gte':1}}]},\\\n", + " {'name':1, 'offices.city':0, '_id':0, 'offices.latitude':1, 'offices.longitude':1})" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'paris2_2dsphere'" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db.df1.create_index([('paris2', '2dsphere')])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "#help(folium.Icon)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = folium.Map(\n", + " location=[48.8032, 2.3511],\n", + " zoom_start=10,\n", + " tiles='Stamen Terrain'\n", + ")\n", + "\n", + "folium.Marker(\n", + " location=[48.8582602, 2.29449905431968],\n", + " popup='Eiffel Tower',\n", + " icon=folium.Icon(icon='glass')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[49.009724, 2.547778],\n", + " popup='Airport',\n", + " icon=folium.Icon(icon='cloud')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[46.227638, 2.213749],\n", + " popup='Kewego',\n", + " icon=folium.Icon(color='red')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.847549, 2.299235],\n", + " popup='YOOWALK',\n", + " icon=folium.Icon(color='green')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.846726, 2.321213],\n", + " popup='Wevod',\n", + " icon=folium.Icon(color='green')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.887534, 2.356288],\n", + " popup='Preview Networks',\n", + " icon=folium.Icon(color='green', icon='info-sign')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.892699, 2.317960],\n", + " popup='Mediastroika',\n", + " icon=folium.Icon(color='green', icon='info-sign')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.856667, 2.350987],\n", + " popup='2 Minutes',\n", + " icon=folium.Icon(color='green', icon='info-sign')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.855754, 2.380833],\n", + " popup='BetKlub',\n", + " icon=folium.Icon(color='green', icon='info-sign')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.850206, 2.369803],\n", + " popup='Unkown',\n", + " icon=folium.Icon(color='red', icon='info-sign')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.878761, 2.363917],\n", + " popup='Unkown',\n", + " icon=folium.Icon(color='red')\n", + ").add_to(m)\n", + "\n", + "folium.Marker(\n", + " location=[48.8584, 2.3024],\n", + " popup='Dream Office',\n", + " icon=folium.Icon(color='cadetblue', icon='star')\n", + ").add_to(m)\n", + "\n", + "m.save('gaming_office.html')\n", + "\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/module-2/python-bi-project/eu_gaming.json b/module-2/python-bi-project/eu_gaming.json new file mode 100644 index 0000000..d2348b2 --- /dev/null +++ b/module-2/python-bi-project/eu_gaming.json @@ -0,0 +1 @@ +{"name":{"0":"Kewego","1":"YOOWALK","2":"Wevod","3":"Wevod","4":"deltatre","5":"Awdio","6":"Citizenside","7":"Vibeex","8":"Owlient","9":"Preview Networks","10":"Mediastroika","11":"2 Minutes","12":"BetKlub"},"offices":{"0":[{"city":"Paris","latitude":46.227638,"longitude":2.213749}],"1":[{"city":"Paris","latitude":48.8475487,"longitude":2.2992348}],"2":[{"city":"Paris","latitude":48.846726,"longitude":2.321213}],"3":[{"city":"Paris","latitude":48.846726,"longitude":2.321213}],"4":[{"city":"Torino","latitude":45.058576,"longitude":7.649614},{"city":"London","latitude":null,"longitude":null},{"city":"Lausanne","latitude":null,"longitude":null},{"city":"Paris","latitude":null,"longitude":null},{"city":"New York","latitude":null,"longitude":null}],"5":[{"city":"Paris","latitude":48.887534,"longitude":2.356288}],"6":[{"city":"Paris","latitude":48.8926988,"longitude":2.3179601}],"7":[{"city":"Paris","latitude":48.8566667,"longitude":2.3509871}],"8":[{"city":"Paris","latitude":48.8308091,"longitude":2.3032201}],"9":[{"city":"Copenhagen","latitude":55.6659813,"longitude":12.5800751},{"city":"London","latitude":null,"longitude":null},{"city":"Berlin","latitude":null,"longitude":null},{"city":"Paris","latitude":null,"longitude":null},{"city":"Milan","latitude":null,"longitude":null},{"city":"Stockholm","latitude":null,"longitude":null}],"10":[{"city":"Paris","latitude":48.8557544,"longitude":2.3808328}],"11":[{"city":"Paris","latitude":48.8502056,"longitude":2.3698033}],"12":[{"city":"Paris","latitude":48.8787606,"longitude":2.3639174}]}} \ No newline at end of file diff --git a/module-2/python-bi-project/gaming_office.html b/module-2/python-bi-project/gaming_office.html new file mode 100644 index 0000000..b0e63c5 --- /dev/null +++ b/module-2/python-bi-project/gaming_office.html @@ -0,0 +1,363 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/module-2/python-bi-project/paris_gaming.json b/module-2/python-bi-project/paris_gaming.json new file mode 100644 index 0000000..610f281 --- /dev/null +++ b/module-2/python-bi-project/paris_gaming.json @@ -0,0 +1 @@ +{"name":{"0":"Kewego","1":"YOOWALK","2":"Wevod","3":"Wevod","9":"Preview Networks","10":"Mediastroika","11":"2 Minutes","12":"BetKlub","19":null,"20":null,"21":null},"city":{"0":"Paris","1":"Paris","2":"Paris","3":"Paris","9":"Paris","10":"Paris","11":"Paris","12":"Paris","19":"Paris","20":"Paris","21":"Paris"},"latitude":{"0":46.227638,"1":48.8475487,"2":48.846726,"3":48.846726,"9":48.887534,"10":48.8926988,"11":48.8566667,"12":48.8308091,"19":48.8557544,"20":48.8502056,"21":48.8787606},"longitude":{"0":2.213749,"1":2.2992348,"2":2.321213,"3":2.321213,"9":2.356288,"10":2.3179601,"11":2.3509871,"12":2.3032201,"19":2.3808328,"20":2.3698033,"21":2.3639174}} \ No newline at end of file