《利用Python进行数据分析》 14.5 2012年联邦选举委
第十四章 数据分析示例
注:本章示例数据集可在附带的GitHub仓库(http://github.com/wesm/pydata-book)中找到
14.5 2012年联邦选举委员会数据库
美国联邦选举委员会公布了有关政治运动贡献的数据。这些数据包括捐赠者姓名、职业和雇主、地址和缴费金额。一个有趣的数据来自2012年美国总统大选。我在2012年6月下载的一个数据集版本是一个150兆字节的CSV文件P00000001-ALL.csv(请参阅本书的数据存储库)
图14-1:载入数据1.使用pandas.read_csv载入数据(见图14-1)
图14-2:样本记录2.观察样本记录(见图14-2)
图14-3:候选人名单3.使用unique获得所有不同的政治候选人名单(见图14-3)
图14-4:表示政党背景4.使用相应的字典表示政党背景(见图14-4)
图14-5:计算政党数组5.在Series对象上使用map方法和上述的映射关系,从候选人姓名中计算出政党的数组(见图14-5)
图14-6:数据分析要点6.数据准备要点(见图14-6)
14.5.1 按职业和雇主的捐献统计
根据职业分析捐献是一个常见的统计分析。例如,律师(法律代理人)倾向于捐更多的钱给民主党,而商务人士则倾向于捐更多的钱给共和党。你没有任何理由相信我,你可以自己看数据。
图14-7:按职业捐献总数1.首先,获得按职业的捐献总数(见图14-7)
图14-8:清理工作种类2.通过将一种工作匹配到另一种来清理工作种类(见图14-8)
注:使用dict.get存在一种"陷阱",允许没有映射的职业"通过"
图14-9:聚合、过滤3.使用pivot_table按党派和职业聚合数据,然后过滤出至少捐赠200万美元的子集(见图14-9)
图14-10:按党派划分各职业捐赠总量4.以条形图的方式进行数据可视化更为简单('barh’表示水平条形图,参见图14-10)
图14-11:分组函数5.按候选人名称进行分组,并使用本章前面的top方法的变体(见图14-11)
图14-12:聚合6.按职业和雇主进行聚合(见图14-12)
14.5.2 捐赠金额分桶
图14-13:分桶1.使用cut函数将贡献者的数量按贡献大小离散化分桶(见图14-13)
图14-14:分组2.将Obama和Romney的数据按名称和分类标签进行分组(见图14-14)
图14-15:不同捐赠规模的候选人收到的捐赠总额的百分比3.对捐款数额进行求和并在桶内进行归一化,以便对按候选人划分的捐款总额百分比进行可视化(见图14-15)
注:排除了两个最大的箱体,因为这些箱体不是由个人捐赠的。
这种分析可以通过多种方式进行改进和提高。例如,你可以通过捐助者姓名和邮政编码聚合捐款,以便为那些进行很多次小额捐赠的人进行调整,他们并不会进行大型捐赠。
14.5.3 按州进行捐赠统计
图14-16: 将数据按照候选人和州进行聚合1.将数据按照候选人和州进行聚合(见图14-16)
图14-17:每个候选人按州的捐赠总额的相对百分比2.将每一行除以捐款总额,得到每个候选人按州的捐赠总额的相对百分比(见图14-17)