Python 需要创建具有相同人口的垃圾箱。还需要生成一个报告,其中包含BIN和cut之间的交叉选项卡

Python 需要创建具有相同人口的垃圾箱。还需要生成一个报告,其中包含BIN和cut之间的交叉选项卡,python,pandas,data-science,Python,Pandas,Data Science,我使用的是钻石数据集,下面是列 问题:创建人口相等的垃圾箱。还需要生成一个报告,其中包含BIN和cut之间的交叉选项卡。表示每个单元格下的数字占总数的百分比 我有上述疑问。虽然我是一个初学者,但我创建了Volume列,并尝试使用qcut创建具有相同人口的垃圾箱,但我无法继续。有人能帮我解决这个问题吗 pd.qcut(diamond['Volume'], q=4) 您的路径是正确的:pd.qcut()尝试将您提供的数据拆分为大小相等的容器(尽管可能需要根据数据的形状进行一些调整) pd.qcu

我使用的是钻石数据集,下面是列

问题:创建人口相等的垃圾箱。还需要生成一个报告,其中包含BIN和cut之间的交叉选项卡。表示每个单元格下的数字占总数的百分比

我有上述疑问。虽然我是一个初学者,但我创建了Volume列,并尝试使用qcut创建具有相同人口的垃圾箱,但我无法继续。有人能帮我解决这个问题吗

pd.qcut(diamond['Volume'], q=4)

您的路径是正确的:
pd.qcut()
尝试将您提供的数据拆分为大小相等的容器(尽管可能需要根据数据的形状进行一些调整)

pd.qcut()
还允许您指定
labels=False
作为参数,这将返回观测值所落入的容器的编号。这有点令人困惑,因此这里有一个快速的检查:您可以传递
标签=['a'、'B'、'C'、'D']
(给定您对4个箱子的请求),这将返回每行所属箱子的标签。通过告诉
pd.qcut
您没有标签来提供箱子,函数返回一个箱子编号,只是没有特定的标签。否则,该函数返回的是一个元组,其中包含观察值(行)的范围和bin编号

您需要箱子编号的原因是因为您的下一个请求:箱子指示器列和
cut
的交叉选项卡。首先,创建一列,其中包含箱子编号:

diamond['binned_volume
]=pd.qcut(diamond['volume'],q=4,labels=False)`

接下来,使用
pd.crosstab()
方法获取表格:

pd.交叉表(菱形['binned_volume'],菱形['cut'],normalize=True)

normalize=True
参数将让表计算条目,将条目除以它们的总和,我相信这是您问题的最后一部分