Aracılığıyla paylaş


Hızlı Başlangıç: SQL makine öğrenmesi ile Python kullanan veri yapıları ve nesneleri

Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri Azure SQL Yönetimli Örnek

Bu hızlı başlangıçta SQL Server Machine Learning Services, Azure SQL Yönetilen Örneği Machine Learning Services veya SQL Server Büyük Veri Kümelerinde Python kullanırken veri yapılarını ve veri türlerini kullanmayı öğreneceksiniz. Python ile SQL Server arasında veri taşımayı ve oluşabilecek yaygın sorunları öğreneceksiniz.

SQL makine öğrenmesi, tablosal verilerle çalışmak için harika olan Python pandas paketine dayanır. Ancak, Python'dan veritabanınıza skaler geçiremez ve yalnızca çalışmasını bekleyebilirsiniz. Bu hızlı başlangıçta, Python ile veritabanı arasında tablo verileri geçirirken karşılaşabileceğiniz ek sorunlara hazırlanmak için bazı temel veri yapısı tanımlarını gözden geçireceksiniz.

Öne doğru bilinmesi gereken kavramlar şunlardır:

  • Veri çerçevesi , birden çok sütunu olan bir tablodur.
  • Veri çerçevesinin tek bir sütunu, seri olarak adlandırılan liste benzeri bir nesnedir.
  • Veri çerçevesinin tek bir değeri hücre olarak adlandırılır ve dizin tarafından erişilir.

Data.frame tablosal bir yapı gerektiriyorsa, hesaplamanın tek sonucunu veri çerçevesi olarak nasıl kullanıma sunarsınız? Tek bir yanıt, tek skaler değeri bir seri olarak temsil etmektir ve bu değer kolayca bir veri çerçevesine dönüştürülür.

Uyarı

Tarihleri döndürürken, SQL'deki Python 1753-01-01(-53690) ile 9999-12-31 (2958463) arasında kısıtlı tarih aralığına sahip DATETIME kullanır.

Önkoşullar

Bu hızlı başlangıcı çalıştırmak için aşağıdaki önkoşullara ihtiyacınız vardır.

Seri olarak skaler değer

Bu örnek basit matematik işlemleri yapar ve skaler değerleri seriye dönüştürür.

  1. Seriler, burada gösterildiği gibi el ile veya program aracılığıyla atayabileceğiniz bir dizin gerektirir.

    EXECUTE sp_execute_external_script @language = N'Python'
        , @script = N'
    a = 1
    b = 2
    c = a/b
    print(c)
    s = pandas.Series(c, index =["simple math example 1"])
    print(s)
    '
    

    Seri bir data.frame'e dönüştürülemediğinden, değerler İletiler penceresinde döndürülür, ancak sonuçların daha tablo biçiminde olduğunu görebilirsiniz.

    Results

    STDOUT message(s) from external script: 
    0.5
    simple math example 1    0.5
    dtype: float64
    
  2. Serinin uzunluğunu artırmak için bir dizi kullanarak yeni değerler ekleyebilirsiniz.

    EXECUTE sp_execute_external_script @language = N'Python'
        , @script = N'
    a = 1
    b = 2
    c = a/b
    d = a*b
    s = pandas.Series([c,d])
    print(s)
    '
    

    Bir dizin belirtmezseniz, 0 ile başlayan ve dizinin uzunluğuyla biten değerlere sahip bir dizin oluşturulur.

    Results

    STDOUT message(s) from external script:
    0    0.5
    1    2.0
    dtype: float64
    
  3. Dizin değerlerinin sayısını artırırsanız ancak yeni veri değerleri eklemezseniz, veri değerleri seriyi doldurmak için yinelenir.

    EXECUTE sp_execute_external_script @language = N'Python'
        , @script = N'
    a = 1
    b = 2
    c = a/b
    s = pandas.Series(c, index =["simple math example 1", "simple math example 2"])
    print(s)
    '
    

    Results

    STDOUT message(s) from external script:
    0.5
    simple math example 1    0.5
    simple math example 2    0.5
    dtype: float64
    

Serileri veri çerçevesine dönüştürme

Skaler matematik sonuçlarını tablosal bir yapıya dönüştürdükten sonra, yine de bunları SQL makine öğrenmesinin işleyebileceği bir biçime dönüştürmeniz gerekir.

  1. Seriyi data.frame'e dönüştürmek için pandas DataFrame yöntemini çağırın.

    EXECUTE sp_execute_external_script @language = N'Python'
        , @script = N'
    import pandas as pd
    a = 1
    b = 2
    c = a/b
    d = a*b
    s = pandas.Series([c,d])
    print(s)
    df = pd.DataFrame(s)
    OutputDataSet = df
    '
    WITH RESULT SETS((ResultValue FLOAT))
    

    Sonuç aşağıda gösterilmiştir. Data.frame dizininden belirli değerleri almak için dizini kullansanız bile, dizin değerleri çıkışın bir parçası değildir.

    Results

    ResultValue
    0,5
    2

Değerleri veri çerçevesine yaz

Şimdi data.frame içindeki iki matematik sonucu serisinden belirli değerleri çıkaracaksınız. birincisi Python tarafından oluşturulan sıralı değerlerin dizinine sahiptir. İkincisi, dize değerlerinin rastgele bir dizinini kullanır.

  1. Aşağıdaki örnek, tamsayı dizini kullanarak seriden bir değer alır.

    EXECUTE sp_execute_external_script @language = N'Python'
        , @script = N'
    import pandas as pd
    a = 1
    b = 2
    c = a/b
    d = a*b
    s = pandas.Series([c,d])
    print(s)
    df = pd.DataFrame(s, index=[1])
    OutputDataSet = df
    '
    WITH RESULT SETS((ResultValue FLOAT))
    

    Results

    ResultValue
    2.0

    Otomatik oluşturulan dizinin 0'da başladığını unutmayın. Aralık dışı dizin değeri kullanmayı deneyin ve neler olduğunu görün.

  2. Şimdi bir dize dizini kullanarak diğer veri çerçevesinden tek bir değer alın.

    EXECUTE sp_execute_external_script @language = N'Python'
        , @script = N'
    import pandas as pd
    a = 1
    b = 2
    c = a/b
    s = pandas.Series(c, index =["simple math example 1", "simple math example 2"])
    print(s)
    df = pd.DataFrame(s, index=["simple math example 1"])
    OutputDataSet = df
    '
    WITH RESULT SETS((ResultValue FLOAT))
    

    Results

    ResultValue
    0,5

    Bu seriden bir değer almak için sayısal dizin kullanmaya çalışırsanız bir hata alırsınız.

Sonraki Adımlar

SQL makine öğrenmesi ile gelişmiş Python işlevleri yazma hakkında bilgi edinmek için şu hızlı başlangıcı izleyin: