Допустим, у меня есть следующий набор данных:
![enter image description here](https://i.stack.imgur.com/y1WTg.png)
Моя цель здесь - создать график кумулятивной плотности (3 на одном графике), который показываетпроцент записей, которые находятся ниже каждого числа от 0 до макс. (count1, count2, count3).
Другими словами, когда x = 10, строка 1 будет иметь значение 10%, строка 2 также будет составлять 10%, иline3 будет составлять 20%, так как в каждом столбце есть соответственно 1,1 и 2 записи ниже 10.
РЕДАКТИРОВАТЬ: я сделал следующее, что сработало, однако, скорее всего, есть более эффективный способ сделать это, чемперебирая от 1 до n и запрашивая кадр данных. Есть идеи?
global_max = np.max(max(df['Counts1']),max(df['Counts2']),max(df['Counts3']))
ranges = list(range(0, int(global_max)))
sizes = len(df)
count1 = []
count2 = []
count3 = []
for i in ranges:
a = i
count1.append(len(df.query('Counts1 < @a'))/sizes)
count2.append(len(df.query('Counts2 <@a'))/sizes)
count3.append(len(df.query('Counts3 <@a'))/sizes)
density = pd.DataFrame(zip(ranges, count1, count2, count3), columns = ["Count", "Counts1", "Counts2", "Counts3"])
plt.plot(density['Count'], density['Counts1'])
plt.plot(density['Count'], density['Counts2'])
plt.plot(density['Count'], density['Counts3'])