2017-10-29 179 views
1

我已經在本地的couchdb服務器上下載了Twitter數據。 它被保存爲json文件。如何查詢來自couchdb的文檔並將它們加載到熊貓數據框中?

我使用此代碼在python中輸入數據庫。 第一次導入庫

import couchdb 
import pandas as pd 
from couchdbkit import Server 
import json 
import cloudant 

下次連接到服務器,然後選擇我要進入數據庫。

dbname = couchdb.Server('http://localhost:5984') 
db = dbname['Test'] 
server = couchdb.Server('http://localhost:5984') 

我可以使用python創建和刪除數據庫,但是我不知道如何將數據從服務器放到jupyter筆記本上。 我想通過轉發文本和時間來分析它。 我只能看到一個來自python的JSON文件。

如果可能的話,我想在數據庫中添加所有JSON數據到python中的pandas數據框,這樣我就可以在R中分析它。

問題是:如何查詢文檔並將它們加載到熊貓數據框中?

+0

這裏有什麼問題?你想將沙發文檔轉儲爲CSV?你想查詢文件並將它們加載到熊貓數據框中? –

+0

謝謝你的評論。如何查詢文檔並將它們加載到熊貓數據框中? – Tateishi

回答

1

來自CouchDB數據庫的所有文檔都可以從/{db}/_all_docs端點以include_docs查詢屬性提取。響應是一個json對象,其中列出了rows字段中的所有文檔。

您可以使用requests包直接與CouchDB的工作,然後用pandas.read_json加載響應爲熊貓或使用couchdb包轉換JSON爲Python對象的內部,然後直接裝入反應,即做這樣的事情:

import couchdb 
import pandas as pd 

couch = couchdb.Server('http://localhost:5984') 
db = couch['Test'] 
rows = db.view('_all_docs', include_docs=True) 
data = [row['doc'] for row in rows] 
df = pd.DataFrame(data) 

請注意比讀一個完整的數據庫到內存中可能是資源徵稅,所以你可能要考慮_all_docs終點的skiplimit查詢參數讀取較小的批次信息。

+0

我能夠像你所建議的那樣,在熊貓上以數據框的形式加載json。有一件事,在json裏面是另一個帶有字典的json文件。例。列名稱是實體並在其內部{u'symbols':[],u'user_mentions':[{u'indices':[0,14],u'id':305734622,u'id_str':u'305734622 ',u'name':u'Charles Watts',u'screen_name':u'name_'},{u'indices':[15,24],u'id':845149392,u'id_str':u' 845149392',u'name':u'name_',u'screen_name':name'}],u'hashtags':[],u'urls':[]}如何將這些添加爲數據框? – Tateishi

+0

這取決於您想要在最後獲得的數據幀的結構。熊貓的數據框是二維結構,因此在將結果數據傳遞到熊貓之前,需要將'row ['doc']'轉換爲期望的形狀,同時循環行。 – eiri

+0

你能解釋_'doc'_的含義嗎? – Tateishi

相關問題