如何将Presto查询输出转换为Python数据框架



我想将我的查询输出转换为python数据框架以绘制线路图

import prestodb
import pandas as pd
conn=prestodb.dbapi.connect(
host='10.0.0.101',
port=8081,
user='hive',
catalog='hive',
schema='ong',
)
cur = conn.cursor()
query="SELECT dtime,tagName FROM machine where tagname is not null 
limit 1000"
cur.execute(query)
rows = cur.fetchall()
print(rows)
df = pd.DataFrame(query, columns=['x_axis','tagName'])

这是我从查询中的示例输出

[['2018-09-08 00:00:00.000', 26], ['2018-09-08 01:00:00.000', 26], 
['2018-09-08 02:00:00.000', 26], ['2018-09-08 03:00:00.000', 27], 
['2018-09-08 04:00:00.000', 27], ['2018-09-08 05:00:00.000', 27]]

如何使用Python将此查询输出转换为数据框架

这很简单,我建议您使用pyhive.presto连接器(请参阅:https://github.com/dropbox/pyhive(,以连接到presto,也可以使用您应该以相同的方式工作。

然后您有几个选择:

1-使用Presto连接和PANDAS read_sql_query

2-使用presto光标,并使用fetchall的输出作为数据框的输入数据。

# option 1
import pandas as pd
from pyhive import presto
connection = presto.connect(user='my-user', host='presto.my.host.com', port=8889)
df = pd.read_sql_query("select 100", connection)
print(
    df.head()
)

# option 2
import pandas as pd
from pyhive import presto
connection = presto.connect(user='my-user', host='presto.my.host.com', port=8889)
cur = connection.cursor()
cur.execute("select 100") 
df = pd.DataFrame(cur.fetchall())
print(
    df.head()
)

df = pd.dataframe(cur.fetchall(((打印(DF(

将数据列名称输入数据框架,请使用以下方式:

df = pd.DataFrame(cur.fetchall(), columns=[i[0] for i in cur.description])

相关内容

  • 没有找到相关文章

最新更新