从直方图创建一个字典 - Python

时间:2017-09-08 10:13:46

标签: python pandas matplotlib

我希望从直方图中创建一个json / dict。

使用pandas加载数据并将其绘制成以下结果

import pandas as pd

df = pd.read_csv(PATH_TO_CSV)
df.hist(log=True)

结果如下: Example histogram

我想知道将这个作为一个词典的最佳方式是什么,我对我希望dict看起来的方式并不严格,但我正在考虑像

这样的东西
histogram = {
    'dropoff_latitude': {
        '30-35': 1800000,
        .....
    },
    'dropoff_longitude': {
        ....
    }
}

1 个答案:

答案 0 :(得分:2)

这是一种方式。 histfun创建了np.histogram来获取垃圾箱并计算信息。而且,label会创建bin表示。

In [95]: def histfun(x):
    ...:     hist, bins = np.histogram(x)
    ...:     bbins = np.char.mod('%.2f', bins)
    ...:     label = map('-'.join, zip(bbins[:-1], bbins[1:]))
    ...:     return dict(zip(label, hist))
    ...:

In [96]: df.apply(histfun).to_dict()
Out[96]:
{'dropoff_latitude': {'30.00-35.00': 2,
  '35.00-40.00': 0,
  '40.00-45.00': 0,
  '45.00-50.00': 1,
  '50.00-55.00': 0,
  '55.00-60.00': 0,
  '60.00-65.00': 0,
  '65.00-70.00': 0,
  '70.00-75.00': 0,
  '75.00-80.00': 1},
 'dropoff_longitude': {'0.00-12.00': 2,
  '108.00-120.00': 1,
  '12.00-24.00': 0,
  '24.00-36.00': 0,
  '36.00-48.00': 0,
  '48.00-60.00': 0,
  '60.00-72.00': 1,
  '72.00-84.00': 0,
  '84.00-96.00': 0,
  '96.00-108.00': 0}}

样本测试数据

In [97]: df
Out[97]:
   dropoff_latitude  dropoff_longitude
0                30                120
1                30                  0
2                45                  0
3                80                 60