直方图的箱子

时间:2017-04-01 18:02:53

标签: python pandas matplotlib

我有一个如下所示的数据框:

ContextCompat.getDrawable(mContext, drawable)

我尝试将合法的 1 值拆分为直方图的6个bin间隔。间隔看起来像:

     legal    value
0    1        3
1    1        7
2    0        10
3    1        12
4    1        4
5    1        17
6    0        21
7    1        19
8    1        3
9    0        18
10   1        17
11   1        17
12   0        11
13   1        23

收集的数据将如下所示:

[0-6], [6-9], [9-12], [12-16], [16-20], [20-24]

我正在尝试使用c x轴上的bin间隔创建直方图,并在y轴上创建有效 1 值的频率。基本上尝试创建一个类似于example的直方图。

到目前为止,我已经写过:

bin    frequency   values
0-6    3           3, 4, 3
6-9    1           7
9-12   1           12
12-16  1           12
16-20  4           17, 17, 19, 17
20-24  1           23

哪个尝试使用词典对bin进行分组,但这似乎过于复杂,并且使用import pandas as pd import numpy as np import matplotlib.pyplot as plt from collections import defaultdict bins = ['0-6', '6-9', '9-12', '12-16', '16-20', '20-24'] df = pd.read_csv('data.csv', encoding = 'ISO-8859-1') d = defaultdict(int) for legal, value in zip(df['legal'], df['value']): if (legal == 1): if (0 <= value <= 6): d[bins[0]] += 1 库必须更好。

如何使用pandas之类的内容对各个频率的分组进行分组,然后使用pandas.Dataframe.groupby在直方图上绘制这些值?

1 个答案:

答案 0 :(得分:1)

无需进行任何分组,数据框只能由&#34; legal&#34;进行过滤。列值。

import matplotlib.pyplot as plt
import pandas as pd

legal= [1,1,0,1,1,1,0,1,1,0,1,1,0,1]
value = [3,7,10,12,4,17,21,19,3,18,17,17,11,23]
df = pd.DataFrame({"legal":legal, "value":value})

df2 = df[df["legal"] == 1]

bins = [0,6,9,12,16,20,24]
plt.hist(df2["value"], bins=bins, edgecolor="k")
plt.xticks(bins)

plt.show()

enter image description here