政治献金
导入包
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")
相关阅读
现2005版国标已废止,目前采用的是2015国标,查询网站:全国标准信息公共服务平台,网址如下: http://std.samr.gov.cn/search/std?tid=&q=
互联网金融行业的发展已至新阶段:行业的自我净化在充分进行,合规化建设正如火如荼。在此背景下,互联网金融平台间也在进行激烈的
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大看点
经过所有理论部分的内容,对基金有了一个完整全面的认识,这篇来进行实战。当然涉及到具体的基金,还是要搞了简单的声明,避免误人子弟(不