CANDANDRAのデータをパンダに読み込むには、適切な方法との最速方法がありますか?今私は、次のコードを使用しますが、それは非常に遅いです...PythonはCANDANDRAデータをパンダに読み込みます
import pandas as pd
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
from cassandra.query import dict_factory
auth_provider = PlainTextAuthProvider(username=CASSANDRA_USER, password=CASSANDRA_PASS)
cluster = Cluster(contact_points=[CASSANDRA_HOST], port=CASSANDRA_PORT,
auth_provider=auth_provider)
session = cluster.connect(CASSANDRA_DB)
session.row_factory = dict_factory
sql_query = "SELECT * FROM {}.{};".format(CASSANDRA_DB, CASSANDRA_TABLE)
df = pd.DataFrame()
for row in session.execute(sql_query):
df = df.append(pd.DataFrame(row, index=[0]))
df = df.reset_index(drop=True).fillna(pd.np.nan)
読書1000行は1分かかり、と私は同じクエリなどを実行する場合、私は ...「もう少し」を持っています。 DBeaverでは、1分以内に全体の結果(〜40k行)が得られます。
ありがとうございます!
、私は試してみました'df = pd.DataFrame(session.execute(sql_query))'を実行するか、このリストの一部で 'pd.DataFrame'を実行してください。データフレームに行を1つずつ追加することは非効率的です。 – ptrj
'session.execute(sql_query)'の結果は、特殊な '' iterableオブジェクトです。その行は、タプル、名前付きタプルまたは辞書にすることができます。 –
ragesz
私は参照してください。それでも、最初にリストに変換する方がいいです。例えば、 'lst = [];セッション内の行のために::lst.append(row) 'それ以外は何も動作しません。そして結果を連結する: 'df = pd.concat(lst)'。このようにして、 'pd.DataFrame.append'への40kの高価な呼び出しを避けることができます。 – ptrj