0
我有一个数据帧,看起来像这样:垃圾箱的直方图
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
,我想只有合法值分成6个箱间隔的直方图。该区间的样子:
[0-6], [6-9], [9-12], [12-16], [16-20], [20-24]
收集的数据则是这样的:
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
我试图创建的CX轴箱体区间的直方图,以及在该频率在y轴上的有效值为。基本上试图创建一个像这样的直方图example。
到目前为止,我已经写了这个:
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
之类的东西来按照各自的频率分组,然后使用matplotlib.pyplot
将这些值绘制在直方图上?