如何将pd.cut的value_counts()转换为字典

时间:2018-11-17 04:28:18

标签: python pandas

熊猫新手,

搜索后,我发现大熊猫非常适合将我的数据按部分划分以在图表上进一步显示。

这是我的工作方式:

print pd.cut(data_lst, 5).value_counts()

data_lst是一个数字列表,上面的代码行给出了一个非常整洁的结果,这正是我所需要的:

(-0.513, 25.6]      9
(25.6, 51.2]       43
(51.2, 76.8]      160
(76.8, 102.4]       0
(102.4, 128.0]    302

但是我只希望结果是以下格式的字典:

{
 "(-0.513, 25.6]":9,
 "(25.6, 51.2]":43,
 "(51.2, 76.8]":160,
 "(76.8, 102.4]":0,
 "(102.4, 128.0]":302    
}

这样我可以将其保存到数据库中,但是除了打印value_counts()之外,我找不到其他方法来获得结果。

3 个答案:

答案 0 :(得分:1)

获取value_counts后,将所得Series的索引转换为str

vc = pd.cut(data_lst, 5).value_counts()
vc.index = vc.index.astype(str)
print vc.to_dict()

以我的玩具示例为例,

{'(5.0, inf]': 4, '(2.0, 5.0]': 3, '(-inf, 2.0]': 3}

我相信您所追求的格式。

答案 1 :(得分:0)

我相信这会有所帮助。

仅以使用DataFrame为例。

查看此Documentation pandas.DataFrame.to_dict

>>> df = pd.DataFrame({'a': ['red', 'yellow', 'blue'], 'b': [0.5, 0.25, 0.125]})
>>> df
        a      b
0     red  0.500
1  yellow  0.250
2    blue  0.125

dict-默认值:列名称是键,值是index:data对的字典

>>> df.to_dict('dict')
{'a': {0: 'red', 1: 'yellow', 2: 'blue'}, 'b': {0: 0.5, 1: 0.25, 2: 0.125}}

列表-键是列名称,值是列数据列表

>>> df.to_dict('list')
{'a': ['red', 'yellow', 'blue'], 'b': [0.5, 0.25, 0.125]}

如果您喜欢元组之类的值,请尝试以下操作:

>>> {x[0]: x[1:] for x in df.itertuples(index=False)}
{'red': (0.5,), 'yellow': (0.25,), 'blue': (0.125,)}

答案 2 :(得分:0)

将打印的项目保存为变量,然后将该数据框转换为字典。

df =(pd.cut(data_lst,5).value_counts())

dict_n = df.to_dict()