Matplotlib/Pandas从Python dict/JSON生成特定的图形

Matplotlib/Pandas从Python dict/JSON生成特定的图形,json,excel,python-3.x,matplotlib,graph,Json,Excel,Python 3.x,Matplotlib,Graph,我希望从Python数据的特定格式制作特定的图形布局,但是数据可能是文本、字符串或另一个Python对象 我可以用XlsxWriter(见下文)实现这一点,但数据超载了(1400万行…不开玩笑。DNA数据)。是否可以/如何使用Matplotlib或PAndas(或更稳定的大数据) 详情: 它必须能够在飞行时执行此操作,并根据数据是否“相同”(不管数字、文本或其他Python对象)做出视觉格式决定 单元格中的颜色基于{1:“A”,2:“A”}中的项目是否等效(不是相同的对象)绿色表示为真,红色表示

我希望从Python数据的特定格式制作特定的图形布局,但是数据可能是文本、字符串或另一个Python对象

我可以用XlsxWriter(见下文)实现这一点,但数据超载了(1400万行…不开玩笑。DNA数据)。是否可以/如何使用Matplotlib或PAndas(或更稳定的大数据)

详情: 它必须能够在飞行时执行此操作,并根据数据是否“相同”(不管数字、文本或其他Python对象)做出视觉格式决定

单元格中的颜色基于
{1:“A”,2:“A”}
中的项目是否等效(不是相同的对象)绿色表示<代码>为真,红色表示<代码>为假。例如:
“A”==“A”
(与前面的句子一样),或
(10/5)==(20/10)
,或
[“A”,1,]=[“A”,1,]
都是绿色的

显示在单元格中的文本只是对象的_str___表示形式

例如

{
    1000:{
          "Sample1":{1:"A", 2:"A"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"A"},
          },

    1001:{
          "Sample1":{1:"A", 2:"A"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"A"}
          },

    1002:{
          "Sample1":{1:"C", 2:"A"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"A"}
          },

    (...)

    9999:{
          "Sample1":{1:"A", 2:"T"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"G"}
          },
}

在Jupyter笔记本中使用熊猫和样式表:

json = {
    1000:{
          "Sample1":{1:"A", 2:"A"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"A"},
          },
    1001:{
          "Sample1":{1:"A", 2:"A"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"A"}
          },
    1002:{
          "Sample1":{1:"C", 2:"A"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"A"}
          },
    9999:{
          "Sample1":{1:"A", 2:"T"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"G"}
          },
}

import pandas as pd
df = pd.DataFrame(json).transpose()
df0 = df.applymap(lambda x: "{}/{}".format(x[1].__repr__(),x[2].__repr__()))
df0

df1 = df.applymap(lambda x: x[1])
df2 = df.applymap(lambda x: x[2])

booldf = df1 == df2
c = lambda x : 'background-color: {}'.format(x)
formatdf = booldf.applymap(lambda x: c("limegreen") if x else c("crimson"))

df0.style.apply(lambda x: formatdf, axis=None)

在Jupyter笔记本中使用熊猫和样式表:

json = {
    1000:{
          "Sample1":{1:"A", 2:"A"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"A"},
          },
    1001:{
          "Sample1":{1:"A", 2:"A"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"A"}
          },
    1002:{
          "Sample1":{1:"C", 2:"A"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"A"}
          },
    9999:{
          "Sample1":{1:"A", 2:"T"}, 
          "Sample2":{1:"A", 2:"A"},
          "Sample3":{1:"A", 2:"G"}
          },
}

import pandas as pd
df = pd.DataFrame(json).transpose()
df0 = df.applymap(lambda x: "{}/{}".format(x[1].__repr__(),x[2].__repr__()))
df0

df1 = df.applymap(lambda x: x[1])
df2 = df.applymap(lambda x: x[2])

booldf = df1 == df2
c = lambda x : 'background-color: {}'.format(x)
formatdf = booldf.applymap(lambda x: c("limegreen") if x else c("crimson"))

df0.style.apply(lambda x: formatdf, axis=None)

您是否知道结束原因:“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题因堆栈溢出而与主题无关,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。”?因此,您希望编辑您的问题,以决定一种工具,并显示解决方案的尝试(或指出使用此工具的实际问题)。我理解。但是,老实说,我希望避免花1到2个小时学习足够的matpoltlib,结果却发现它做不到这一点。然后再使用另一个工具。还有一个。是否有一个
Stack exchange
论坛适合这种意见问题?也许你想从回答者的角度来看。他不想花半个小时在一个解决方案上,只是为了发现它没有使用适合您的工具。(我知道你说这无关紧要,但这是真的吗?几乎每次我回答这样的问题后,都会有一条评论说,“这很好,但我不能使用它,因为原因是bla。”,而问题中根本没有提到“bla”。)例如,在这里,我可能会选择在Jupyter笔记本中使用熊猫格式的表格的解决方案。这个解决方案合适吗?很公平。我改问是否可以用Matplotlib或Pandas来实现这一点。XLS版本确实存在问题,因为它的数据量如此巨大。我知道Numpy可以处理大型阵列…但不能处理这种类型的数据。我不太了解猫或熊猫。老实说,如果我能得到matplotlib可以做到这一点的保证……那么我将花时间学习如何做到这一点。我甚至不需要实时代码(但如果提供,我会接受它):D)“例如,在这里,我可能会选择在Jupyter笔记本中使用pandas格式表的解决方案。该解决方案合适吗?”如果你认为这确实可行……我会尝试:D老实说,我需要报告。对我的老板来说,这怎么不重要呢:)那么,我不受约束(除了买一个价值10000美元的软件或其他东西:D)你知道结案的原因吗:“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。”?因此,您希望编辑您的问题,以决定使用一种工具,并展示解决方案的尝试(或指出使用此工具的实际问题).我理解。但是,老实说,我希望避免花1到2个小时学习足够多的matpoltlib,结果却发现它无法做到这一点。然后再使用另一个工具。还有另一个。是否有一个
堆栈交换
论坛适合这种意见问题?也许你想从回答者的角度来看。他会的我不想花半个小时在一个解决方案上,却发现它没有为你使用合适的工具。(我知道你说这无关紧要,但这是真的吗?几乎每次我回答这样一个问题时,后面都会有评论说,“太好了,但我不能使用它,因为原因是bla。”,其中“bla”“问题中根本没有提到。)例如,在这里,我可能会选择在Jupyter笔记本中使用pandas格式表格的解决方案。这个解决方案合适吗?很公平。我改问是否可以用Matplotlib或Pandas来实现这一点。XLS版本确实存在问题,因为它的数据量如此巨大。我知道Numpy可以处理大型阵列…但不能处理这种类型的数据。我不太了解猫或熊猫。老实说,如果我能得到matplotlib可以做到这一点的保证……那么我将花时间学习如何做到这一点。我甚至不需要实时代码(但如果提供,我会接受它):D)“例如,在这里,我可能会选择在Jupyter笔记本中使用pandas格式表的解决方案。该解决方案合适吗?”如果你认为这确实可行……我会尝试:D老实说,我需要报告。对我的老板来说,这怎么不重要呢:)所以,我不受约束(除了买一个价值10000美元的软件或其他东西:D)