必威体育Betway必威体育官网
当前位置:首页 > IT技术

美国2012年总统候选人政治献金数据分析

时间:2019-10-13 00:45:36来源:IT技术作者:seo实验室小编阅读:67次「手机版」
 

政治献金

导入包

import pandas as pd
import numpy as np
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
%matplotlib inline

方便大家操作,将月份和参选人以及所在政党进行定义

months = {'JAN' : 1, 'FEB' : 2, 'MAR' : 3, 'APR' : 4, 'MAY' : 5, 'JUN' : 6,
          'JUL' : 7, 'AUG' : 8, 'SEP' : 9, 'OCT': 10, 'NOV': 11, 'DEC' : 12}
of_interest = ['Obama, Barack', 'Romney, Mitt', 'Santorum, Rick', 
               'Paul, Ron', 'Gingrich, Newt']
parties = {
  'Bachmann, Michelle': 'Republican',
  'Romney, Mitt': 'Republican',
  'Obama, Barack': 'Democrat',
  "Roemer, Charles E. 'Buddy' III": 'Reform',
  'Pawlenty, Timothy': 'Republican',
  'Johnson, Gary Earl': 'Libertarian',
  'Paul, Ron': 'Republican',
  'Santorum, Rick': 'Republican',
  'Cain, Herman': 'Republican',
  'Gingrich, Newt': 'Republican',
  'McCotter, Thaddeus G': 'Republican',
  'Huntsman, Jon': 'Republican',
  'Perry, Rick': 'Republican'           
 }

读取文件

ele = pd.read_csv("./usa_election.csv", low_memory=False)
print(ele.shape)
ele.head()
#cand_nm:候选人的姓名
#contbr_nm:捐款者的姓名
#contbr_occupation:职业
#contb_receipt_amt:捐款多少
#contb_receipt_dt:时间

使用map函数+字典,新建一列各个候选人所在党派party

ele["party"] = ele["cand_nm"].map(parties)

查看单独一行,是否加上了’party’一列

ele.head()

使用np.unique()函数查看colums:party这一列中有哪些元素

ele["party"].unique()

使用value_counts()函数,统计party列中各个元素出现次数

ele["party"].value_counts()

使用groupby()函数,查看各个党派收到的政治献金总数contb_receipt_amt

ele.groupby(["party"])["contb_receipt_amt"].sum()

查看具体每天各个党派收到的政治献金总数contb_receipt_amt

使用groupby([多个分组参数])

ele.groupby(["party","contb_receipt_dt"])["contb_receipt_amt"].sum()

查看日期格式,并将其转换为Pandas的日期格式,通过函数加map方式进行转换

def convert_date(date):
    #31   OCT    11
    day,mon,year = date.split("-")
    month = months[mon]
    time = '20'+str(year) + "-"+str(month)+"-"+str(day)
    return time
ele["contb_receipt_dt"] = ele["contb_receipt_dt"].map(convert_date)

查看是否转换成功

ele.head()

将时间转换为时间数据类型,根据时间进行排序

ele["contb_receipt_dt"] = pd.to_datetime(ele["contb_receipt_dt"])
ele.dtypes
ele.sort_values("contb_receipt_dt", inplace = True)
ele

得到转换后的,每天各政党所收政治献金数目。

p_d_m = ele.groupby(["party", "contb_receipt_dt"])["contb_receipt_amt"].sum()
p_d_m

使用unstack()将上面所得数据中的party从一级索引变成列索引,unstack(‘party’)

p_d_m = p_d_m.unstack(level = 0, fill_value = 0)
p_d_m

使用上面获取的数据

画出各党派累计政治献金,cumsum()累加函数

p_d_m_cumsum = p_d_m.cumsum()
p_d_m_cumsum
pic = p_d_m_cumsum.plot()

把时间作为列,党派作为行来观察,unstack(‘contb_receipt’)

p_d_m.stack().unstack(level = 0)

使用stack()把party变成二级行索引,注意所有的值都不能为nan,需要填充为0

查看候选人姓名cand_nm和政治献金捐献者职业contbr_occupation,以及捐献情况。能看出各个候选人主要的支持者分布情况

result = ele.groupby(["cand_nm", "contbr_occupation"])["contb_receipt_amt"].sum()
result
cond = result["Obama, Barack"] > 1e5
result["Obama, Barack"][cond].sort_values()

查看老兵主要支持谁:disableD VETERAN

ele.columns
cond = ele["contbr_occupation"] == "DISABLED VETERAN"
cond.sum()
ele["cand_nm"][cond].value_counts()
ele[cond][["contb_receipt_amt","cand_nm"]].groupby(["cand_nm"])["contb_receipt_amt"].sum()

找出各个候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额

通过query(“查询条件来查找捐献人职业”)

cond = ele.groupby(["cand_nm"])["contb_receipt_amt"].max()
cond
ele.query("cand_nm == 'Obama, Barack' and contb_receipt_amt == 1944042.43")

相关阅读

参考文献格式国家标准(GB-T 7714-2005)

现2005版国标已废止,目前采用的是2015国标,查询网站:全国标准信息公共服务平台,网址如下: http://std.samr.gov.cn/search/std?tid=&q=

银豆网、和信贷、钱保姆、抱财网、龙光金服送2688元新

互联网金融行业的发展已至新阶段:行业的自我净化在充分进行,合规化建设正如火如荼。在此背景下,互联网金融平台间也在进行激烈的

TexStudio添加BibTex参考文献

This article will guide you adding BibTex reference in your Texstudio within 5 minutes. First, prepare two files in you

金立正式“复活”发布新手机 重回手机市场

A5创业网(公众号:iadmin5) 9月2日讯,金立手机官方微信公众号在突然发布了一篇为新手机M11系列预热的文章,阐述了新手机的的6大看点

【程序员如何买基金 终章】实战操作篇

经过所有理论部分的内容,对基金有了一个完整全面的认识,这篇来进行实战。当然涉及到具体的基金,还是要搞了简单的声明,避免误人子弟(不

分享到:

栏目导航

推荐阅读

热门阅读