2017-10-29 4 views
1

ローカルのcouchdbサーバーでTwitterデータをダウンロードしました。 それはjsonファイルとして保存されました。couchdbからドキュメントを照会し、それらをpandasデータフレームにロードするにはどうすればいいですか?

このコードを使用して、データベースを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') 

私は、しかし、私はjupyterのノートブックにサーバーからデータを置くことができるのか分からないのpythonでデータベースを作成および削除できます。 私はそれを分析するためにリトロットでテキストと時間を取得したいと思います。 私はPythonから1つのJSONファイルしか見ることができません。

可能であれば、DB内のすべてのJSONデータをpythonのpandasデータフレームに追加したいので、Rでも解析することができます。

質問は、ドキュメントをクエリしてパンダのデータフレームに読み込む方法ですか?

+0

ここで質問とは何ですか?あなたはCSVにカウチのドキュメントをダンプしたいですか?あなたはドキュメントを照会し、それらをpandasデータフレームにロードしますか? –

+0

ありがとうございます。どのようにドキュメントを照会し、それらをpandasデータフレームにロードするのですか? – Tateishi

答えて

1

CouchDBのデータベースからのすべてのドキュメントは、include_docsクエリ属性を持つ/{db}/_all_docsエンドポイントから取得できます。応答は、rowsフィールドにリストされているすべてのドキュメントのjsonオブジェクトです。

あなたは直接のCouchDBで動作するように requestsパッケージを使用して、 pandas.read_jsonでパンダに応答をロードまたは内部のpythonオブジェクトにJSONを変換 couchdbパッケージを使用して、直接応答を読み込み、つまりはこのような何か行うことができますいずれか

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

あなたが提案したように、私はpsonのデータフレームとしてjsonを読み込むことができました。 jsonの中の1つは、その中に辞書を持つ他のjsonファイルです。例。カラム名はエンティティで内部に '{u'symbols ':[]、u'user_mentions':[{u'indices ':[0,14]、u'id':305734622、u'id_str ':u'305734622 'u'index':[15,24]、u'id ':845149392、u'id_str':u ''、 'u'name':u'screen_name ' []、u'hashtags ':[]、u'urls':[]} 'これらをデータフレームとしてどのように追加することができますか? – Tateishi

+0

最後に取得したいデータフレームの構造によって異なります。 Pandasのデータフレームは2次元構造であるため、結果の 'data'をパンダに渡す前に' row ['doc'] 'を所望の形状に変換して' rows'をループする必要があります。 – eiri

+0

あなたは_'doc'_の意味を説明できますか? – Tateishi

関連する問題