0

我試圖從一個數據幀文件使用對象存儲在IBM DataScienceExperience沃森個性見解API發佈的數據..發佈文字

我已經加載txt文件到ObjectStorage並創建了一個DataFrame。工作正常。不明白如何將數據框中的數據發佈到API。所提供的文件並沒有指出我正確的方向。

這是我做了什麼

from io import StringIO 
import requests 
import json 
import pandas as pd 

def get_object_storage_file_with_credentials(container, filename): 
    """This functions returns a StringIO object containing 
    the file content from Bluemix Object Storage.""" 

    url1 = ''.join(['https://identity.open.softlayer.com', '/v3/auth/tokens']) 
    data = { 
     'auth': { 
      'identity': { 
       'methods': ['password'], 
       'password': { 
        'user': { 
         'name': 'UID UID UID', 
         'domain': { 
          'id': 'ID ID ID' 
         }, 
        'password': 'PASS PASS' 
        } 
       } 
      } 
     } 
    } 
    headers1 = {'Content-Type': 'application/json'} 
    resp1 = requests.post(url=url1, data=json.dumps(data), headers=headers1) 
    resp1_body = resp1.json() 

    for e1 in resp1_body['token']['catalog']: 
     if(e1['type']=='object-store'): 
      for e2 in e1['endpoints']: 
       if(e2['interface']=='public'and e2['region']=='dallas'): 
        url2 = ''.join([e2['url'],'/', container, '/', filename]) 

    s_subject_token = resp1.headers['x-subject-token'] 
    headers2 = {'X-Auth-Token': s_subject_token, 'accept': 'application/json'} 
    resp2 = requests.get(url=url2, headers=headers2) 

    return StringIO(resp2.text) 

PI_text = get_object_storage_file_with_credentials('MyDSXProjects', 'myPI.txt') 

接下來我要發佈數據框內容的API 我想知道怎麼樣,希望有人能提供一個提示... 我的Python知識這裏缺乏。

回答

0

根據Watson Personality Insights API reference,您可以提供文本,HTML或JSON輸入。您的數據集可用作熊貓數據框。嘗試將DataFrame中的相關列轉換爲文本格式。例如,通過:

pi_api_text = PI_text['<TEXT_COLUMN>'].str.cat(sep='. ').encode('ascii', 'ignore') 

確保你已經安裝了Python包:

pip install --upgrade watson-developer-cloud 

一旦你有相關的數據以文本格式作出沃森個性見解API的調用。例如作爲:

personality_insights = PersonalityInsightsV3(
version='xxxxxxxxx', 
username='xxxxxxxxxx', 
password='xxxxxxxxxx') 
profile = personality_insights.profile(
pi_api_text, content_type='text/plain', 
raw_scores=True, consumption_preferences=True) 

的響應將是含有性格特徵,它可以重新變換到一個數據幀大熊貓JSON對象。

+0

Hi Sumit, PI_text對象中的文本是非結構化數據。 我想將此文本發佈到Watson Personality insight API並將結果存儲到DataFrame中,稍後我將與另一個DataFrame一起用於分析。 所以它真的是將ObjectStorage對象發佈到API。 – Brenzef

+0

@Brenzef,將相關列從數據框轉換爲文本格式後,您可以對Watson Personality Insights API進行api調用。讓我相應地編輯答案。 –