本章节以及后续章节的源码,当然也可以从我的github下载,在源码中我自己加了一些中文注释。
美国联邦选举委员会发布了有关政治竞选赞助方面的数据。其中包括赞助者的姓名、职业、雇主、地址以及出资额等信息。我们先用pandas.read_csv将其加载进来。
一、数据预处理


该数据中没有党派信息,因此最好把它加进去。通过unique,你可以获取全部的候选人名单:

指明党派信息的方法之一是使用字典:

通过这个映射以及Series对象的map方法,可以根据候选人姓名得到一组党派信息:

该数据既包括赞助也包括退款(负的出资额):

为了简化分析过程,限定该数据集只能有正的出资额:

由于Barack Obama和Mitt Romney是最主要的两名候选人,所以还专门准备了一个子集,只包含针对他们两人的竞选活动的赞助信息:

二、根据职业和雇主统计赞助信息
基于职业的赞助信息统计是另一种经常被研究的统计任务。例如,律师们更倾向于资助民主党,而企业主则更倾向于资助共和党。首先,根据职业计算出资总额:


不难看出,许多职业都涉及相同的基本工作类型,或者同一样东西有多种变体。下面的代码片段可以清理一些这样的数据(将一个职业信息映射到另一个)。注意,这里巧妙地利用了dict.get,它允许没有映射关系的职业也能“通过”:

对雇主信息也进行了同样的处理:

可以通过pivot_table根据党派和职业对数据进行聚合,然后过滤掉总出资额不足200万美元的数据:


把这些数据做成柱状图看起来会更加清楚('barh'表示水平柱状图)

对Obama和Romney总出资额最高的职业和企业。




三、对出资额分组
利用cut函数根据出资额的大小将数据离散化到多个面元中:

根据候选人姓名以及面元标签对奥巴马和罗姆尼数据进行分组,以得到一个柱状图:

从这个数据中可以看出,在小额赞助方面,Obama获得的数量比Romney多得多。还可以对出资额求和并在面元内规格化,以便图形化显示两位候选人各种赞助额度的比例。



四、根据州统计赞助信息
根据候选人和州对数据进行聚合是常规操作:


如果对各行除以总赞助额,就会得到各候选人在各州的总赞助额比例:

快速学习:
网友评论