自动生成所需的Plotly数据结构

时间:2019-06-04 22:30:03

标签: python-3.x plotly

我想使用Plotly在Python3中生成一个交互式散点图。严格要求数据输入采用特定格式。我希望能够自动生成格式,因为我有很多数据。

以下列格式绘制散点图数据

fig = {
    'data': [
  {
        'x': sim_corr.AAK1, 
        'y': sim_pas.AAK1, 
        'text': sim_corr.index, 
        'mode': 'markers', 
        'name': 'AAK1'},
        {
        'x': sim_corr.ABL1, 
        'y': sim_pas.ABL1, 
        'text': sim_corr.index, 
        'mode': 'markers', 
        'name': 'ABL1'},
            {
        'x': sim_corr.ABL2, 
        'y': sim_pas.ABL2, 
        'text': sim_corr.index, 
        'mode': 'markers', 
        'name': 'ABL2'}
],
    'layout': {
        'title':'Correlation VS PAS',
        'hovermode':'closest',
        'xaxis': {'title': 'Correlations'},
        'yaxis': {'title': "PAS"}
    }
}

其中sim_corr和sim_pas是两个熊猫数据帧,而AAK1是在两个数据帧中找到的列名。上面只有207列中的3列。我是通过手动输入每一列来生成图的,但是我相信有一种更有效的方法。我真的不知道如何做到这一点。

这是用于在较小规模上生成相似数据帧的代码,

import pandas as pd
df1 = pd.DataFrame(data = [[1,2,3,4], [4,5,6,7], [7,8,9,10], [10,11,12,13]], index = ["a", 'b', 'c', 'd'], columns = ['col1', 'col2', 'col3', 'col4'])
df2 = pd.DataFrame(data = [[4,2,5,4], [1,5,3,7], [2,8,5,10], [3,11,7,13]], index = ["a", 'b', 'c', 'd'], columns = ['col1', 'col2', 'col3', 'col4'])


预期结果将是为共享相同列名的两个数据框中的所有列自动以所需的结构生成数据输入。

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了一种比手动输入数据快得多的方法来创建此图。首先在第一个数据框中创建一个列名列表。使用上面提供的示例代码:

g = []
for i in range(0,len(df1.columns)):
    x = str("df1." + df1.columns[i])
    g.append(x)

second在第二个数据框中创建一个列名列表。

h = []
for i in range(0,len(df2.columns)):
    x = str("df2." + df2.columns[i])
    h.append(x)

最终创建字典列表,同时遍历在步骤1和2中创建的两个列表中的列名。

dics = []
for i in range(0,len(df1.columns)):
    d = {'x': g[i],
         'y': h[i],
         'text':df1.index,
         'mode':'markers',
         'name':str(df1.columns[i])}
    dics.append(d)

现在dics包含以所需格式输入的数据。如果有人知道更有效的方法,请在下面添加。