首页 > 解决方案 > 从 Python 中的频率表中绘制 CDF

问题描述

我有一些频率数据:

Rank Count
A    34
B    1
C    1
D    2
E    1
F    4
G    112
H    1 
 ...

在字典中:

d = {"A":34,"B":1,"C":1,"D":2,"E":1,"F":4,"G":112,"H":1,.......}

字母代表从最高到最低(A 到 Z)的排名,以及我在数据集中观察排名的次数。

鉴于字典中已有观察频率,如何绘制累积分布函数?我希望能够看到观察结果的总体排名。例如:我 50% 的观察结果的排名低于 E。

我一直在寻找有关这方面的信息,但我总能找到从原始观察结果而不是从计数中绘制 CDF 的方法。

提前致谢。

标签: pythonmatplotlib

解决方案


也许您想绘制一个条形图,其中 x 轴上的等级和 y 轴上的 cdf?

u = u"""Rank Count
A    34
B    1
C    1
D    2
E    1
F    4
G    112
H    1"""

import io
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(io.StringIO(u), delim_whitespace=True)
df["Cum"] = df.Count.cumsum()/df.Count.sum()
df.plot.bar(x="Rank", y="Cum")

plt.show()

在此处输入图像描述


推荐阅读