为元组字典中的所有元素访问相同的值

时间:2019-04-18 14:38:17

标签: python dictionary plot

我有一个字典,其中包含所有键均以7元组为值的键。对于每7个元组,这7个值中的每一个代表一个与键所代表的数据集相对应的不同属性。例如,每个元组的第一个元素是该数据集原始数据的数组,第二个值是数据的均值,第三个值是该均值的误差,第四个值是该数据集的温度我想绘制这些值的各种不同组合,例如平均值与温度之间的关系。

因此,我需要找到一种方法来将字典值转换为包含所有具有相同属性的值的不同列表,即所有平均值的列表和所有温度的列表。我知道字典本身是无序的,这会使事情复杂化,因为列表中的每个值都需要与其他列表中的相应值具有相同的索引。

dictionary={}
for i in range(len(imagefolders)):
   dictionary[slugify(imagefolders[i])]=images2(r{}\*.png".format(imagefolders[i]))

plotting=dictionary.values()

上面的代码显示了我如何将键和值输入到字典中。我知道dictioanry.values()返回字典中所有值的列表,但是当我尝试上述代码时,它甚至没有将其存储为变量。

我现在正在考虑使用字典来存储此数据不是最佳选择,因此,如果有人对此有更好的想法,请说一下,但是使其与字典一起使用的方法将是理想的选择。 / p>

我对python相当缺乏经验,因此不胜感激。

1 个答案:

答案 0 :(得分:1)

我建议您看看pandas 。它专为数据分析而设计,具有大量超级有用的功能。它可能有些曲折,但是关于stackoverflow的文档很丰富。

为了向您展示一些功能,我创建了一个类似于您所描述的模拟字典。我正在使用一个非常简单的元组来帮助演示元素的位置,以供以后使用

class SimpleData : Data
{
  public bool IsHighLowByteOrder { get; set; }
  public uint StartBit{ get; set; }
  public uint BitLen { get; set; }
}

如果上面的结构与您的字典结构匹配,那么我们的状态很好。要将其放入一张大桌子中,您需要做的是以下几行,以使所有魔术都易于使用。

columns = ['data', 'mean', 'error', 'temperature', 'other1', 'other2', 'other3']
d = {}
for i in ['one', 'two', 'three', 'four', 'five']:
    d[i] = (1, 2, 3, 4, 5, 6, 7)

print(d)
# {
#   'one':   (1, 2, 3, 4, 5, 6, 7),
#   'two':   (1, 2, 3, 4, 5, 6, 7),
#   'three': (1, 2, 3, 4, 5, 6, 7),
#   'four':  (1, 2, 3, 4, 5, 6, 7),
#   'five':  (1, 2, 3, 4, 5, 6, 7)
# }

要访问给定字段,您可以根据该列对其进行索引,然后根据需要对其进行统计。

import pandas as pd
df = pd.DataFrame.from_dict(d, orient='index', columns=columns)
print(df)
#        data  mean  error  temperature  other1  other2  other3
# three     1     2      3            4       5       6       7
# one       1     2      3            4       5       6       7
# five      1     2      3            4       5       6       7
# two       1     2      3            4       5       6       7
# four      1     2      3            4       5       6       7

Pandas还通过matplotlib函数内置了对df.plot()的支持。