【问题标题】:Making a table and a histogram from various counters从各种计数器制作表格和直方图
【发布时间】:2018-04-09 10:12:56
【问题描述】:

这里我有一个由列表启动的代码,它需要两个随机字母并将它们放回主列表。然后我计算每个生成列表中的每个字母:

import random
import collections


def randMerge(l:list, count:int) -> list:
    return l + [random.sample(l,k=count)]

def flatten(d):
    return [i for b in [[c] if not isinstance(c, list) else flatten(c)
 for c in d] for i in b]

num = 2
aList = ['A','B','C','D']
newList = aList[:]
    for _ in range(3):
        newList = randMerge(newList,num)
        print(newList)
        new_counts = collections.Counter(flatten(newList))
        print(new_counts) 

给出:

['A', 'B', 'C', 'D', ['A', 'C']]
Counter({'A': 2, 'C': 2, 'B': 1, 'D': 1})
['A', 'B', 'C', 'D', ['A', 'C'], ['D', 'A']]
Counter({'A': 3, 'C': 2, 'D': 2, 'B': 1})
['A', 'B', 'C', 'D', ['A', 'C'], ['D', 'A'], ['A', 'B']]
Counter({'A': 4, 'B': 2, 'C': 2, 'D': 2})

现在我想知道如何制作一个数据框,使每列计数器中的数字和行代表字母。我这样做了:

df = pandas.DataFrame.from_dict(new_counts, orient='index')

但这只给了我最后一个计数器。另外,如何制作每个计数器的直方图并将它们一起显示?

【问题讨论】:

    标签: python python-3.x pandas dataframe histogram


    【解决方案1】:

    如果您需要每一列代表Counter 对象的内容,您可以从对象列表创建数据框,然后转置。

    import collections, random, pandas as pd
    
    def randMerge(l:list, count:int) -> list:
        return l + [random.sample(l,k=count)]
    
    def flatten(d):
        return [i for b in [[c] if not isinstance(c, list) else flatten(c)
                for c in d] for i in b]
    
    num = 2
    aList = ['A','B','C','D']
    
    res = []
    newList = aList[:]
    
    for _ in range(3):
        newList = randMerge(newList,num)
        new_counts = collections.Counter(flatten(newList))
        res.append(new_counts)
    
    print(res)
    
    # [Counter({'A': 2, 'C': 2, 'B': 1, 'D': 1}),
    #  Counter({'C': 3, 'A': 2, 'D': 2, 'B': 1}),
    #  Counter({'C': 4, 'A': 2, 'B': 2, 'D': 2})]
    
    df = pd.DataFrame(res).T
    
    print(df)
    
    #    0  1  2
    # A  2  2  2
    # B  1  1  1
    # C  2  3  5
    # D  1  2  3
    

    【讨论】:

    • 谢谢我试图通过这个来做直方图:df.plot(kind='hist') 但它给了我 有什么问题吗我在做什么?
    • @William,好的,这是一个单独的问题。您需要将每个问题分解成组件并分别研究它们。诸如“以这种格式创建数据框,然后绘制直方图”之类的问题对于 SO 来说太宽泛了。这不是代码编写服务。我们在这里提供帮助,提供问答,而不是提供解决方案的服务。
    • @William,正如我所说 - 乐于提供帮助。非常欢迎您就直方图提出一个单独的问题,只要确保以前没有被问过,并且从前几行就很清楚,而不是在最后一句话!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 2014-09-08
    • 1970-01-01
    相关资源
    最近更新 更多