SQL: Sprawdzanie czy tabela jest wykorzystywana w widokach, funkcjach lub procedurach

2018-11-25

Od czasu do czasu administrator lub programista musi nieco posprzątać w swojej bazie danych. Sprzątanie może polegać na usunięciu tabel, które nie są już potrzebne, w których kiedyś ktoś planował przechowywać jakieś dane, ale się rozmyślił i zostają osierocone, nieużywane tabele. Wykonanie polecenia DROP jest proste, szybkie i przyjemne, ale przed usuwaniem warto sprawdzić, czy tabela nie jest wykorzystywana w widokach, procedurach i funkcjach.

Jeżeli inne obiekty były tworzone z wykorzystaniem opcji with SCHEMA_BINDING, to zadanie jest proste, bo sama próba usunięcia obiektu, do którego odwołują się inne obiekty skończy się błędem. Gorzej jeśli ta opcja nie była wykorzystywana, ale i tak masz na to rozwiązanie.

Oto przykład jaki rozważymy: Czytaj dalej »

By Rafał Kraik in SQL

Python: zmiana wartości w DataFrame dla wierszy spełniających określony warunek

2018-11-25

DataFrame może zawierać dużo wierszy. Czasami chcesz zmienić wartość w określonej kolumnie, ale tylko pod warunkiem, że dane w wierszu spełniają jakiś określony warunek.Zacznijmy od  instrukcji tworzącej prosty data frame:

import pandas as pd
import numpy as np
 
df = pd.DataFrame(columns=['values','values2'])
 
for i in range(10):
 df.loc[i] = [i,i*10]
 
df

Teraz kolej na sztuczkę. Trzeba znaleźć miejsca, gdzie w kolumnie values mamy spełniony jakiś warunek, powiedzmy values > 5

filter = df['values'] > 5
filter

filter to seria wartości True/False, gdzie True oznacza komórki spełniające warunek, a False – nie spełniające. Jak chcesz dostać z data frame, tylko te wiersze, które spełniają warunek piszesz tak:

df[filter]

a jak chcesz tylko te zmienić (tutaj np. wpisać wartość NaN), to piszesz tak:

df['values'][filter] = np.NaN
df

 

By Rafał Kraik in Python

Python: Pandas: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame

2018-11-25

Popatrzmy na takie polecenie:

import pandas as pd

df = pd.DataFrame({'Name':['Jack','Sue',pd.np.nan,'Bob','Alice','John'],
'A': [1, 2.1, pd.np.nan, 4.7, 5.6, 6.8],
'B': [.25, pd.np.nan, pd.np.nan, 4, 12.2, 14.4],
'City':['Seattle','SF','LA','OC',pd.np.nan,pd.np.nan]})

df[['A','B']].fillna('?', inplace=True)

wynik to niestety ostrzeżenie:

SettingWithCopyWarning:

A value is trying to be set on a copy of a slice from a DataFrame

 See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

downcast=downcast, **kwargs) Czytaj dalej »

By Rafał Kraik in Python

Linux Fedora Workstation: Uruchomienie systemu w trybie znakowym

2018-11-25

Na systemie jest zainstalowany Linux Fedora Workstation w trybie graficznym. Z jakiegoś powodu uruchamianie grafiki zawodzi, ale śmiało można zostać przy systemie z wyłącznie interfejsem tekstowym. Jak zmienić domyślny sposób uruchamiania systemu, kiedy nie można się zalogować do interfejsu graficznego?

Podczas uruchamiania powinieneś zobaczyć menu:

 

naciśnij e. Powinieneś zobaczyć okienko jak poniżej. Musisz dopisać „3” w tym samym miejscu co zaznaczyłem na ilustracji poniżej. Linux może pracować na różnych run-level i właśnie run level 3 oznacza uruchomienie systemu w trybie znakowym z obsługą sieci i usługami sieciowymi (tylko grafika nie jest dostępna): Czytaj dalej »

By Rafał Kraik in Linuxy

Kurs Linux dla początkujących, 5h video – za free!

2018-10-26

Od dzisiaj na platformie Udemy dostępny jest kurs „Linux dla początkujących”. Z tej okazji przez krótki czas kurs będzie dostępny za darmo! To taki give-back dla społeczności, bez której samodzielne rozwiązywanie wielu problemów byłoby koszmarne.

Jeśli zdążyłeś/aś to poniższy link pozwoli na darmowe zapisanie się na szkolenie. Jeśli kurs został już sklasyfikowany jako płatny, to z tym linkiem możesz go kupić w najniższej możliwej cenie.

Zapisz się na kurs Linux dla początkujących – mistrz linii komend

A co w samym  kursie?

  • Przygotowanie środowiska do kursu (instalacja Linux)
  • Praca z Linuxem z linii komend
  • Polecenia do operacji na plikach i katalogach
  • Uprawnienia i polecenia związane ze zmianą uprawnień
  • Tworzenie kont użytkowników i grup
  • Przegląd popularnych poleceń z linii komend

W sumie ponad 5 godzin materiału wideo, a do każdej lekcji quiz i zadania do samodzielnego rozwiązania (z propozycją rozwiązań)

Zapraszam – pracuj na Linuxie jak PRO!

By Rafał Kraik in Aktualności

Python: sprawdzanie poprawności modelu w predykcji danych

2018-10-24

Podczas budowania modelu predykcyjnego dane, na których model się uczy dzielone są na dane uczące (+/-80%) i dane testowe (+/-20%). Idea jest taka, aby algorytm mając do dyspozycji dane uczące „zauważył” i „nauczył” się reguł, które wpływają na powiązanie danych. Pozostałe dane testowe są na tym etapie ukryte przed algorytmem. Może się to wydawać trochę dziwne, bo przecież kiedy zależy nam na uzyskaniu możliwie najlepszego modelu, to należało by go ćwiczyć na wszystkich dostępnych danych. Jest jednak za tym ukryta pewna idea.

Dzięki danym testowym można mianowicie sprawdzić czy model jest dobry i na ile dobry. Po zakończonym ćwiczeniu modelu, należy wziąć dane testowe i sprawdzić, czy model dobrze przewiduje wartości. Ma to sens, bo przecież dane testowe zostały losowo wyłonione ze wszystkich dostępnych danych i jak by nie było są rzeczywistymi obserwacjami, które model powinien dobrze przewidywać.

Ocena modelu polega na wyznaczeniu przez model przewidywanych wartości i ich porównaniu z rzeczywistymi danymi z danych testowych. Co pozostaje problemem to miara błędu. Do dyspozycji jest:

  • Błąd średniokwadratowy, średni błąd kwadratowy (MSE, ang. Mean Squared Error) – średnia kwadratów błędów dla każdej wartości ze zbioru testowego. Dlaczego kwadratów? Bo gdzieniegdzie błąd jest dodatni, a gdzieniegdzie ujemny – jak się go podniesie do kwadratu, to otrzymana wartość będzie liczbą dodatnią. Ta miara jednak jest zależna od tego co podlega obserwacji – np. przewidywana cena samochodu z błędem +/-1000 jest całkiem niezła w porównaniu z przewidywaną ceną bukietu kwiatów +/-100 zł. Do wyznaczenia tej wartości korzystamy z sklearn.metrics.mean_squared_error
  • Średni błąd bezwzględny (MAE, ang. Mean absolute error) – podobny do MSE, ale zamiast sumy kwadratów błędów liczymy sumę wartości bezwzględnej błedu – miara bardziej oddaje wielkość błędu, ale nadal jest specyficzna dla modelu tak jak MSE. Do wyznaczenia tej wartości korzystamy z sklearn.metrics.mean_absolute_error
  • Współczynnik determinacji (coefficient of determination, R²) – Informuje o tym, jaka część zmienności zmiennej objaśnianej została wyjaśniona przez model. Wartość ta jest wyrażona przez procent, co pozwala uwolnić się od wielkości szacowanych wartości. Wynik 80% będzie więc oznaczał, że model jest godny zaufania na 80%. Im R² jest większe, tym lepiej! Przy okazji współczynnika determinacji mówi się też czasami o współczynniku zbieżności. Zależność między obiema wartościami jest dość prosta:
    współczynnik determinacji = 1 – współczynnik zbieżności
    i co za tym idzie, model jest tym lepszy i mniejszy współczynnik zbieżności. Wartość wyznaczamy korzystając z sklearn.metrics.r2_score

Umownie można przyjąć następujące znaczenie dla współczynnika determinacji:

0,0 – 0,5 – dopasowanie niezadowalające
0,5 – 0,6 – dopasowanie słabe
0,6 – 0,8 – dopasowanie zadowalające
0,8 – 0,9 – dopasowanie dobre
0,9 – 1,0 – dopasowanie bardzo dobre

 

By Rafał Kraik in Data Science

SQL CLR – przykład funkcji, procedur, typów…

2018-10-07

Poniżej zamieszczam przykładową klasę zaimplementowaną w C# Visual Studio 2017 zawierającą:

  • funkcję Split zamieniającą napis rozdzielany separatorami na tabelę wartości
  • funkcję ListFiles zwracającą w postaci tabeli pliki znajdujące się w określonym katalogu
  • funkcję ListDirs zwracającą w postaci tabeli katalogi znajdujące się w określonym folderze
  • funkcję skalarną GetDBCount zwracającą informację o ilości baz znajdujących się na serwerze
  • funkcję agregującą WeightedAvg wyznaczającą średnią ważoną
  • procedurę GetWindowsLocale pobierającą informację o ustawieniach regionalnych z systemu Windows i zwracającą te informacje przez tekst w SQL
  • trigger DropTableTrigger uruchamiany podczas kasowania tabel i zwracający kilka informacji o tej operacji w postaci tekstu
  • typ Point pozwalający na zdefiniowanie punktu, jego parsowanie, wyświetlanie oraz wyznaczanie odległości między punktami na płaszczyźnie

Czytaj dalej »

By Rafał Kraik in SQL