Egzamin AZ-202 Materiały pomocnicze

    No Comments

    Pojawiły się nowe ścieżki certyfikacyjne Microsoftu w obszarze chmury Azure.

    Na początek spróbowałem znaleźć w internecie materiały pokrywające zakres.

    Jest to egzamin AZ-202 ,który kończy certyfikację developerską w przypadku zdania wcześniej egzaminu starej ścieżki czyli 70-532.

     

    Microsoft Azure Developer Certification Transition AZ-202

    Develop for cloud storage (10-15%)

    • Develop solutions that use file storage
    o May include but not limited to: Implement quotas for File Shares in storage account; move items in file shares between containers asynchronously; set file storage container properties in metadata

    https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-create-file-share
    https://docs.microsoft.com/en-us/azure/storage/blobs/storage-properties-metadata

    • Develop solutions that use a relational database
    o May include but not limited to: Create, read, update, and delete database tables by using code; implement dynamic data masking

    https://docs.microsoft.com/en-us/azure/sql-database/sql-database-dynamic-data-masking-get-started-portal

    Create Platform as a Service (PaaS) Solutions (20-25%)

    o May include but not limited to: Define the batch output and conditions by using Batch Service API; write code to run a batch job; run a batch job by using Azure CLI, Azure Portal, and other tools
    https://docs.microsoft.com/en-us/azure/batch/batch-task-output
    https://docs.microsoft.com/en-us/azure/batch/quick-create-portal
    https://docs.microsoft.com/en-us/azure/batch/quick-run-dotnet

    • Design and develop applications that run in containers
    o May include but not limited to: Configure diagnostic settings on resources; create a container image by using a Docker file; create an Azure Container Service (ACS/AKS) cluster by using the Azure CLI and Azure Portal; publish an image to the Azure Container Registry; implement an application that runs on an Azure Container Instance; implement container instances by using Azure Container Service (ACS/AKS), Azure Service Fabric, and other tools; manage container settings by using code

    https://docs.microsoft.com/en-us/azure/container-service/kubernetes/container-service-kubernetes-walkthrough

    Secure cloud solutions (5-10%)

    Develop for an Azure cloud model (20-25%)

    • Develop for asynchronous processing
    o May include but not limited to: Implement parallelism, multithreading, processing, durable functions, Azure logic apps, interfaces with storage, interfaces to data access, and appropriate asynchronous compute models
    https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-async-operations

    • Develop for autoscaling
    o May include but not limited to: Implement autoscaling rules and patterns (schedule, operational/system metrics, code that addresses singleton application instances, and code that addresses transient state
    • Implement distributed transactions
    o May include but not limited to: Identify tools to implement distributed transactions (e.g., ADO.NET, elastic transactions, multi-database transactions); manage transaction scope; manage transactions across multiple databases and servers
    https://docs.microsoft.com/en-us/azure/sql-database/sql-database-elastic-transactions-overview

    Implement cloud integration solutions (10-15%)

    • Configure a message-based integration architecture
    o May include but not limited to: Configure an app or service to send emails, Event Grid, and the Azure Relay Service; create and configure a Notification Hub, an Event Hub, and a Service Bus; configure queries across multiple products; configure an app or service with Microsoft Graph
    • Develop an application message model
    o May include but not limited to: Create a message schema and a message exchange; create an event model; create topics and subscriptions

    Develop AI, Machine Learning, and IoT solutions (20-25%)

    • Integrate Azure Cognitive Services in an application

    https://docs.microsoft.com/en-us/learn/modules/classify-images-with-custom-vision-service/index
    o May include but not limited to: Develop solutions by using intelligent algorithms that identify items from images and videos; develop solutions by using intelligent algorithms related to speech, natural language processing, Bing Search, and recommendations and decision making
    o https://docs.microsoft.com/en-us/azure/cognitive-services/

    • Create and integrate bots
    o May include but not limited to: Create a bot by using the Bot Framework; create a natural language conversation flow; manage bots by using the Azure Portal; register a bot by using the Bot Framework

    https://docs.microsoft.com/en-us/azure/bot-service/bot-service-quickstart?view=azure-bot-service-4.0

    https://tutorials.botsfloor.com/creating-a-bot-using-c-and-microsoft-bot-framework-a344420f9d6f

    Nasz pierwszy ChatBot

    • Integrate machine learning solutions in an app
    o May include but not limited to: Deploy a model; prepare data and data sources; work with data scientists to refine models
    • Create and implement IoT solutions
    o May include but not limited to: Configure Azure Time Series Insights; configure Stream Analytics service for inputs and outputs; establish bidirectional communication with IoT devices by using IoT Hub; register devices with IoT Hub Device Provisioning Service

    https://docs.microsoft.com/en-us/azure/time-series-insights/tutorial-create-populate-tsi-environment

    https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-add-inputs

    https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-define-outputs

     

    Dedykowana strona z labami Microsoft. Warto tu zajrzeć, można całkowicie za darmo po podłączeniu z naszym Live ID mieć dostęp do subskrypcji typu SandBox. Możemy korzystać z Portalu i Azure Cloud Shell. Możemy mieć uruchomioną jedną taką subskrypcję.

    https://docs.microsoft.com/pl-pl/learn/browse/?levels=intermediate&roles=developer

     

     

     

     

    Categories: Azure, Certyfikacja

    Od zera do mistrza Big Data i uczenia maszynowego w Pythonie. Część 4

    No Comments

     

    Po krótkim przeglądzie typów skalarnych i sekwencyjnych przyszedł czas, by pochylić się nad:

    • Instrukcjami warunkowymi
    • Pętlami
    • Wykorzystywaniem gotowych pakietów/modułów

    Dobre opanowanie instrukcji warunkowych jest podstawą do budowy bardziej skomplikowanych struktur sterujących przebiegiem programu.

    Należy zapamiętać jak Python traktuje  typ logiczny rzutowany na typ całkowity, gdzie 1 to prawa, a 0 to fałsz.

    Jak jest wartość logiczna pustej listy, krotki lub słownika ? (sprawdź!)

    Znajomość typu logicznego, operatorów logicznych i instrukcji warunkowej jest również niezbędna przy budowie funkcji i nieco później przy budowie obiektów

     

    Python dostarcza jedynie dwa rodzaje pętli , for oraz while., ale moim zdaniem jest to wystarczający wybór. Możliwa jest iteracja po elementach listy, elementach słownika , elementach napisu czy zakresach. Dodatkowe sterowanie przebiegiem petli w postaci instrukcji break, continue, pass , else:

    • break – przerwij pętlę
    • continue – przerwij obecną iterację
    • pass – nie rób nic
    • else – wykonuj jeśli pętla zakończyła się inaczej niż break

    Pozwala na budowę bardziej rozbudowanej logiki niż zwykła iteracja po elementach różnego typu.

     

    Jedną z silnych cech Pythona jest liczba dostępnych  i darmowych pakietów, które umożliwiają nam wykorzystanie skomplikowanych algorytmów w prosty sposób.

    Nie ma sensu wynajdywanie koła od nowa, ale warto poznać podstawowe funkcjonalności i sposób ich wykorzystania

    Przykładowe pakiety, gdzie praktyką jest stosowanie aliasów

    •  NumPy jest podstawowym zestawem narzędzi dla języka Python umożliwiającym zaawansowane obliczenia matematyczne, w szczególności są to operacje na macierzach..

    • Pandas umożliwia nam tworzenie ramek z danymi (dataframe), które ułatwiają nam pracę przy wstępnej i nie tylko obróbce danych pochodzących z wielu źródeł. Obsłużone są m.in. pliki płaskie, arkusze Excel, a nawet strony html.

    • Matplotlib pomaga przy tworzeniu wizualizacji, dostępnych jest wiele typów wykresów.

    • Folium wzbogaci naszą wizualizacją o interaktywne mapy

    • scilearn-kit jest zbiorem wielu algorytmów stosowanych w uczeniu  maszynowym i w praktyce zawiera wszystko co jest potrzebne do budowę modeli i ich trening.

    • Seaborn, który umożliwia bezpośrednie wykorzystanie ramek z danymi i pozwala na wygenerowanie wykresów bardziej zaawansowanych niż matplotlib.

    • TensorFlow to bogata biblioteka firmy Google, które umożliwia m.in zastosowanie algorytmów uczenia głębokiego (deep learning). Wspiera karty graficzne.

    Często na początku wielu programów w Pythonie, które dotykają uczenia maszynowego, mamy  taki zapis

    Kod notatnika Jupiter umieszczony na Githubie

    Podglad:

    https://nbviewer.jupyter.org/github/djkormo/PythonForML/blob/master/intro/Kurs_3_typy_warunki_iteracje.ipynb

    Uruchomienie:

    https://mybinder.org/v2/gh/djkormo/PythonForML/master?filepath=intro/Kurs_3_typy_warunki_iteracje.ipynb

    Po uruchomieniu kontenera należy wyczyścić informacje wyjściowe za pomocą menu Kernel -> Restart & Clear Output.

    Reenredowane wtyczką WP:

    Operacje logiczne

    In [1]:
    # zacznijmy od porownań 
    
    # czy zero jest mniejsze niż jeden
    
    print('0 < 1 : ',0 < 1)  #True
    
    # czy zero jest większe niż jeden
    
    print('0 > 1 : ',0 > 1)  #False
    
    # czy zero jest mniejsze lub równe jeden
    
    print('0 <= 1 : ',0 <= 1) #True
    
    # czy zero jest większe lub równe jeden
    
    print('0 >= 1 : ',0 >= 1) #False
    
    # czy jeden jest równe zero
    
    print('1 == 0 : ',1 == 0) #False
    
    # czy jeden jest rowne jeden
    
    print('1 == 1 : ',1 == 1) #True
    
    # czy jeden jest różne od zera
    
    print('1 != 0 : ',1 != 0) #True
    
    # czy jeden jest rózne od jeden
    
    print('',1!= 1) #False
    
    0 < 1 :  True
    0 > 1 :  False
    0 <= 1 :  True
    0 >= 1 :  False
    1 == 0 :  False
    1 == 1 :  True
    1 != 0 :  True
     False
    

    Typ logiczny True/False

    In [2]:
    # typ logiczny traktowany jako całkowity  True =1, False =0
    
    print('True + True = ',True + True, type(True + True))
    
    print('True - False = ',True - False,type(True + True))
    
    print('True * False = ',True * False,type(True + True))
    
    print('True / False =',True / False,type(True + True)) # ZeroDivisionError: division by zero
    
    True + True =  2 <class 'int'>
    True - False =  1 <class 'int'>
    True * False =  0 <class 'int'>
    
    ---------------------------------------------------------------------------
    ZeroDivisionError                         Traceback (most recent call last)
    <ipython-input-2-6b7cbeb8d79f> in <module>()
          7 print('True * False = ',True * False,type(True + True))
          8 
    ----> 9 print('True / False =',True / False,type(True + True)) # ZeroDivisionError: division by zero
    
    ZeroDivisionError: division by zero
    In [3]:
    # typ logiczny traktowany jako całkowity  True =1, False =0
    
    print('True and True = ',True and True, type(True and True))
    
    print('True or False = ',True or False,type(True or True))
    
    print('not False = ',not False,type(not False))
    
    print('not True =',not True,type(not True))
    
    True and True =  True <class 'bool'>
    True or False =  True <class 'bool'>
    not False =  True <class 'bool'>
    not True = False <class 'bool'>
    

    Instrukcja warunkowa

    In [4]:
    # instrukcja warunkowa if
    
    # wykona się jeśli wartość logiczna warunku jest prawdziwa
    if True:
      print('Prawda jest najważniejsza\n')
    
    # nie wykona się jeśli wartość logiczna warunku jest fałszywa
    
       
    if False:
      print('Ta instrukcja się nie wykona.')
        
        
    # wykonanie polecenia1 jeśli warunek jest prawdziwy a polecenie2 jeśli falszywy
    
    '''
    if ( warunek ):
        polecenie1
    else:
        polecenie2
    '''
    
    a=100
    
    if a<50:
      print('a jest mniejsze niż 50')
    else:
      print('a jest większe lub równe 50')
        
        
    
        
    
    Prawda jest najważniejsza
    
    a jest większe lub równe 50
    
    In [5]:
    a=53
    
    # instrukcja warunkowa z elif i else
    if a > 50:
        # to się wykona jeśli  warunek jest prawdziwy
        print("a jest większe niż 50")
    elif a == 50:
        # w przeciwnym przypadku, jeśli warunek jest prawdziwy
        print("a jest równe 50")
    else:
        # w pozostałych przypadkach
        print("a jest mniejsze niż 50")
        
        
    a=50
    # instrukcja warunkowa z elif i else
    if a > 50:
        # to się wykona jeśli  warunek jest prawdziwy
        print("a jest większe niż 50")
    elif a == 50:
        # w przeciwnym przypadku, jeśli warunek jest prawdziwy
        print("a jest równe 50")
    else:
        # w pozostałych przypadkach
        print("a jest mniejsze niż 50")
        
    a=47
    # instrukcja warunkowa z elif i else
    if a > 50:
        # to się wykona jeśli  warunek jest prawdziwy
        print("a jest większe niż 50")
    elif a == 50:
        # w przeciwnym przypadku, jeśli warunek jest prawdziwy
        print("a jest równe 50")
    else:
        # w pozostałych przypadkach
        print("a jest mniejsze niż 50")  
    
    a jest większe niż 50
    a jest równe 50
    a jest mniejsze niż 50
    
    In [6]:
    # wykorzystanie  funkcji input
    
    print("Podaj liczbę:", end=' ')
    
    raw_x = input() # pobieramy napis z wejścia standardowego (klawiatury)
    x = eval(raw_x) #  próba interpretacji napisu tak jak wyrażenia języka Python
    
    print('Wprowadzona liczba w stanie surowym: ',raw_x,type(raw_x),' Po ewaluacji :',x, type(x))
    
    if x<10:
        print('Wprowadzona liczba jest mniejsza niż 10')
    elif x == 10:
        # w przeciwnym przypadku, jeśli warunek jest prawdziwy
        print("Wprowadzona liczba jest równa 10")
    else:
        # w pozostałych przypadkach
        print("Wprowadzona liczba jest większa niż 10")  
    
    Podaj liczbę: 11
    Wprowadzona liczba w stanie surowym:  11 <class 'str'>  Po ewaluacji : 11 <class 'int'>
    Wprowadzona liczba jest większa niż 10
    

    Petle

    Petla for

    In [7]:
    # iteracja po liczbach całkowitych
    for licznik in (1,2,3,4):
        print('liczni k= ',licznik)
    
        
    # iteracja po elementach napisu
    
    napis1='Ala ma kota'    
    for litera in (range(len(napis1))):
        print ('Litera = ', napis1[litera])
                    
    # iteracja po liście
    
    owoce = ['gruszka', 'jabłko',  'śliwka']
    
    for owoc in range(len(owoce)):
        print ('Owoc =',owoce[owoc] )
            
    # petla for z dodatkowa klauzula else: na koncu
    
    for licznik in range(1,11):
        print('licznik =',licznik)
    else:
        print('Koniec i bomba!')       
        
        
        
    for licznik in range(10) :
            print('licznik = ',licznik,' ',end='\n')
    else:
            print('Koniec i bomba!')       
    
    liczni k=  1
    liczni k=  2
    liczni k=  3
    liczni k=  4
    Litera =  A
    Litera =  l
    Litera =  a
    Litera =   
    Litera =  m
    Litera =  a
    Litera =   
    Litera =  k
    Litera =  o
    Litera =  t
    Litera =  a
    Owoc = gruszka
    Owoc = jabłko
    Owoc = śliwka
    licznik = 1
    licznik = 2
    licznik = 3
    licznik = 4
    licznik = 5
    licznik = 6
    licznik = 7
    licznik = 8
    licznik = 9
    licznik = 10
    Koniec i bomba!
    licznik =  0  
    licznik =  1  
    licznik =  2  
    licznik =  3  
    licznik =  4  
    licznik =  5  
    licznik =  6  
    licznik =  7  
    licznik =  8  
    licznik =  9  
    Koniec i bomba!
    
    In [8]:
    # figura 1
    for i in range(10):
        print(str(i) * i)
    
    1
    22
    333
    4444
    55555
    666666
    7777777
    88888888
    999999999
    
    In [9]:
    # https://www.w3resource.com/python-exercises/python-conditional-exercise-17.php
    
    # małe ćwiczenie nd dwie petle for wraz z instrukcjami warunkowymi
    
    result_str="";    
    for row in range(0,7):    
        for column in range(0,7):     
            if (((column == 1 or column == 5) and row != 0) or ((row == 0 or row == 3) and (column > 1 and column < 5))):    
                result_str=result_str+"*"    
            else:      
                result_str=result_str+" "    
        result_str=result_str+"\n"    
    print(result_str);
    
      ***  
     *   * 
     *   * 
     ***** 
     *   * 
     *   * 
     *   * 
    
    

    Petla while

    In [10]:
    # wykonuj blok instrukcji dopóki warunek jest spełniony
    
    #while warunek:
    #   instrukcje
    
    i=0
    while i<5: # dopoki warunek jest prawdziwy
        print('Iteracja : ',i)
        i=i+1
    
    Iteracja :  0
    Iteracja :  1
    Iteracja :  2
    Iteracja :  3
    Iteracja :  4
    
    In [11]:
    # z dodaniem else:
    
    i=0
    while i<5: # dopoki warunek jest prawdziwy
        print('Iteracja : ',i)
        i=i+1
    else:  # wykona się na koncu petli 
        print('Koniec pętli.') 
    
    Iteracja :  0
    Iteracja :  1
    Iteracja :  2
    Iteracja :  3
    Iteracja :  4
    Koniec pętli.
    
    In [12]:
    # działa nawet dla pustej petli
    
    i=0
    while i>5: # dopoki warunek jest prawdziwy, w tym przypadku nigdy
        print('Iteracja : ',i)
        i=i+1
    else:  # wykona się na koncu petli 
        print('Koniec pustej pętli.')
    
    Koniec pustej pętli.
    

    Dodatkowe sterowanie w petli

    break - przerwij pętlę

    continue - przerwij obecną iterację

    pass - nie rób nic

    else - wykonuj jeśli pętla zakończyła się inaczej niż break

    break

    In [13]:
    for i in range(1,6): # od 1 do 5
        if i>3: # nie wykona się Iteracja dla i : 4,5
           break
            
        print('Iteracja dla i :',i)
        
    
    Iteracja dla i : 1
    Iteracja dla i : 2
    Iteracja dla i : 3
    

    continue

    In [14]:
    for i in range(1,6): # od 1 do 5
        if i%2==0:
          continue # pomijamy parzyste i
        print('Iteracja dla i :',i)   
    
    Iteracja dla i : 1
    Iteracja dla i : 3
    Iteracja dla i : 5
    

    pass

    In [15]:
    for i in range(1,6): # od 1 do 5
        if i%2==0:
          pass # nic nie rób
        print('Iteracja dla i :',i)   
    
    Iteracja dla i : 1
    Iteracja dla i : 2
    Iteracja dla i : 3
    Iteracja dla i : 4
    Iteracja dla i : 5
    
    In [16]:
    for i in range(1,11): # od 1 do 10
        if i%2==0:
          pass # nic nie rób
        else: # wykona się dla nieparzystych i
          print('Iteracja dla i :',i)   
    
    Iteracja dla i : 1
    Iteracja dla i : 3
    Iteracja dla i : 5
    Iteracja dla i : 7
    Iteracja dla i : 9
    

    else

    In [17]:
    #  wykonanie instrukcji na końcu pętli
    
    for i in range(1,6): # od 1 do 5
        if i%2==0:
          pass # nic nie rób
        print('Iteracja dla i :',i)  
    else:
        print('Koniec pętli.')
    
    Iteracja dla i : 1
    Iteracja dla i : 2
    Iteracja dla i : 3
    Iteracja dla i : 4
    Iteracja dla i : 5
    Koniec pętli.
    
    In [18]:
    # Przyklad petli for z else, który nie zostanie wykonany . 
    
    for i in range(1,11): # od 1 do 10
        if i%2==0:
          pass # nic nie rób
        print('Iteracja dla i :',i)  
        if i%5==0: # konczymy na i=5
            break
    else: #  ta czesc nie wykona się 
        print('Koniec pętli.')
    
    Iteracja dla i : 1
    Iteracja dla i : 2
    Iteracja dla i : 3
    Iteracja dla i : 4
    Iteracja dla i : 5
    

    Pakiety

    In [19]:
    # importowanie pakietu
    
    import this
    
    The Zen of Python, by Tim Peters
    
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea -- let's do more of those!
    
    In [20]:
    #  Dokumentacja danego pakietu/modułu
    
    help(this)
    
    Help on module this:
    
    NAME
        this
    
    MODULE REFERENCE
        https://docs.python.org/3.6/library/this
        
        The following documentation is automatically generated from the Python
        source files.  It may be incomplete, incorrect or include features that
        are considered implementation detail and may vary between Python
        implementations.  When in doubt, consult the module reference at the
        location listed above.
    
    DATA
        c = 97
        d = {'A': 'N', 'B': 'O', 'C': 'P', 'D': 'Q', 'E': 'R', 'F': 'S', 'G': ...
        i = 25
        s = "Gur Mra bs Clguba, ol Gvz Crgref\n\nOrnhgvshy vf o...bar ubaxvat ...
    
    FILE
        /home/nbuser/anaconda3_501/lib/python3.6/this.py
    
    
    
    In [21]:
    # lista obiektów, które zawiera dany pakiet 
    dir(this)
    
    Out[21]:
    ['__builtins__',
     '__cached__',
     '__doc__',
     '__file__',
     '__loader__',
     '__name__',
     '__package__',
     '__spec__',
     'c',
     'd',
     'i',
     's']
    In [22]:
    # wyswietlenie zawartości jednego z nich
    
    # odwołanie w formacie nazwapa_pkietu.nazwa_obiektu
    
    print('this.c = ',this.c,' type :', type(this.c))
    
    this.c =  97  type : <class 'int'>
    

    Aliasy

    In [23]:
    # Podczas importu pakietu można uzyc aaliasu
    import this as zp
    # dostep do zmiennej c  formacie nazwa_aliasu.nazwa_obiektu
    print('zp.c = ',zp.c,' type :', type(zp.c))
    # dostep z poprzedniego importu bez aliasu
    print('this.c = ',this.c,' type :', type(this.c))
    
    zp.c =  97  type : <class 'int'>
    this.c =  97  type : <class 'int'>
    
    In [24]:
    import sys
    # usuwamy załadowany pakiet math
    del sys.modules['math']
    # importujemy go ponownie
    import math as m
    # dostep do wartości PI i E
    print('m.pi = ',m.pi,' type :', type(m.pi)) #m.pi =  3.141592653589793  type : <class 'float'>
    print('m.e = ',m.e,' type :', type(m.e)) # m.e =  2.718281828459045  type : <class 'float'>
    # dostep bez podania aliasu 
    
    print('this.c = ',math.pi,' type :', type(math.pi)) # NameError: name 'math' is not defined
    
    m.pi =  3.141592653589793  type : <class 'float'>
    m.e =  2.718281828459045  type : <class 'float'>
    
    ---------------------------------------------------------------------------
    NameError                                 Traceback (most recent call last)
    <ipython-input-24-c4f65d516bdb> in <module>()
          9 # dostep bez podania aliasu
         10 
    ---> 11 print('this.c = ',math.pi,' type :', type(math.pi)) # NameError: name 'math' is not defined
    
    NameError: name 'math' is not defined

    Często stosowane pakiety

    In [25]:
    # czesto wykorzystujemy aliasy przy imporcie znanych pakietow
    
    import pandas as pd
    
    # wersja pakietu pd
    
    print (pd.__version__) # 0.20.3
    # gdzie został zainstalowany pakiet
    
    print(pd) # <module 'pandas' from '/home/nbuser/anaconda3_501/lib/python3.6/site-packages/pandas/__init__.py'>
    
    import numpy as np
    
    # wersja pakietu np
    print (np.__version__) # 1.15.1
    
    # gdzie został zainstalowany
    print(np)
    
    # import podmodułu pyplot z pakietu patplotlib jako alias plt
    
    import matplotlib.pyplot as plt
    %matplotlib inline
    
    # Proste demo 
    
    # generowanie 100 pseudolosowych liczb 
    
    liczby=np.random.rand(100,1)
    
    # budowa histogramu
    
    plt.hist(liczby)
    
    # wyswietlenie 
    
    plt.show()
    
    0.20.3
    <module 'pandas' from '/home/nbuser/anaconda3_501/lib/python3.6/site-packages/pandas/__init__.py'>
    1.15.1
    <module 'numpy' from '/home/nbuser/anaconda3_501/lib/python3.6/site-packages/numpy/__init__.py'>
    

    Importowanie obiektów do globalnej przestrzeni nazw

    In [26]:
    # importowanie z pakietu this wyłącznie zmiennej c
    
    from this import c
    
    print('c = ',c,' type :', type(c))
    
    # importowanie z pakietu this wszystkich obiektow
    # nie jest to polecane, gdzyż skutecznie zaśmieci 
    # nam globalna przestrzeń nazw
    
    c=15.0
    print('c = ',c,' type :', type(c))
    
    from this import *
    
    # zmienna c została nadpisana wartością 97 z pakietu
    print('c = ',c,' type :', type(c))
    
    c =  97  type : <class 'int'>
    c =  15.0  type : <class 'float'>
    c =  97  type : <class 'int'>
    
    In [29]:
    # co jeśli brakuje nam zainstalowanego pakietu
    # importujemy pakiet folium do wizualizacji map
    
    import folium   # ModuleNotFoundError: No module named 'folium'
    
    # pakiet nie został zainstalowany 
    
    ---------------------------------------------------------------------------
    ModuleNotFoundError                       Traceback (most recent call last)
    <ipython-input-29-e188466ce0bb> in <module>()
          2 # importujemy pakiet folium do wizualizacji map
          3 
    ----> 4 import folium
    
    ModuleNotFoundError: No module named 'folium'
    In [30]:
    # instalacja pakietu folium
    
    # wykorzystujemy instalato pip dostepny z poziomu Pythona
    
    !pip install folium 
    
    Collecting folium
      Using cached https://files.pythonhosted.org/packages/88/89/8186c3441eb2a224d2896d9a8db6ded20ddd225f109e6144494a9893a0c1/folium-0.6.0-py3-none-any.whl
    Requirement already satisfied: requests in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from folium) (2.19.1)
    Requirement already satisfied: six in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from folium) (1.11.0)
    Requirement already satisfied: numpy in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from folium) (1.15.1)
    Requirement already satisfied: branca>=0.3.0 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from folium) (0.3.0)
    Requirement already satisfied: jinja2 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from folium) (2.9.6)
    Requirement already satisfied: certifi>=2017.4.17 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from requests->folium) (2017.7.27.1)
    Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from requests->folium) (3.0.4)
    Requirement already satisfied: idna<2.8,>=2.5 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from requests->folium) (2.6)
    Requirement already satisfied: urllib3<1.24,>=1.21.1 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from requests->folium) (1.23)
    Requirement already satisfied: MarkupSafe>=0.23 in /home/nbuser/anaconda3_501/lib/python3.6/site-packages (from jinja2->folium) (1.0)
    Installing collected packages: folium
    Successfully installed folium-0.6.0
    
    In [32]:
    '''pojdzmy krok dalej i zbudujmy prosty mechanizam wykrywający 
    ze dany pakiet nie jest zainstalowany '''
    
    import sys
    # sprawdzenie czy dany pakiet został zainstalowany
    if  not 'folium' in sys.modules:
     # instalujemy pakiet
      !pip install folium
    
    # importujemy pakietu
    import folium
    # sprawdzamy jego wersje 
    print ('Folium version :',folium.__version__)
    
    Folium version : 0.6.0
    

     

    Categories: migawka, Python