我有一个如下所示的数据框:
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
在直方图上绘制这些值?
答案 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()