【发布时间】:2017-01-19 06:24:56
【问题描述】:
我正在学习如何使用pandas python 库。鉴于之前没有使用 pandas 或任何统计语言(例如 Stata)的经验,我正在尝试一个可能不是最简单的问题。
假设我有一个查询人们对馅饼和蛋糕的感受的数据集。我问的大部分问题都是这样的:
“你更喜欢馅饼而不是蛋糕吗?”或者“你会投票给 2020 年的美国总统樱桃派吗?”
这些导致“是”或“否”的答案。
假设我有1000 人做出了回应,但他们有一些对我即将进行的分析很重要的区别,例如Gender、Eye-Color 和primary-hand-use(右/左/双手通用)。还假设我有数百个这样的区别,最终我想将它们与同一个问题进行比较。
现在,我可以从我的 cake-pie.DTA 文件中运行:
frame = pandas.read_stata("cake-pie.DTA")
answers = ["Yes", "No"]
pandas.crosstab(frame["Question_1", frame["Eye_Color"]], answers, normalize="columns")
这会给我以下信息:
col_0 yes
col_1 no
Question_1 eye_color
Yes Blue 0.1500
Hazel 0.050
Brown 0.2100
Green 0.050
No Blue 0.2850
Hazel 0.0000
Brown 0.2450
Green 0.010
但是,我的 1000 名做出回应的人并不是由每种眼睛颜色的比例相等。也许我的人口看起来像:
Blue 435 (43.5%)
Hazel 50 (5.0%)
Brown 455 (45.5%)
Green 60 (6.0%)
我希望输出的信息不是对 GREEN 和 YES 的概率的估计,而是对 Yes | 的概率的估计。 GREEN(在绿眼睛的情况下是的概率。)
我意识到我可以手动除以子种群总数来得到答案,但我不确定如何除以上面我的眼睛颜色表的 pandas Series 数据,以便在单个交叉表中做到这一点.
【问题讨论】:
-
您为 Hazel 和 Green 添加了 0。
-
@TedPetrou Urgh,我的大脑在受伤。你能代表我用实际加起来的内容编辑我的问题吗?