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

 

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

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'
}

完成下列需求: 

1.读取文件usa_election.txt
2.查看文件样式及基本信息
3.【知识点】使用map函数+字典,新建一列各个候选人所在党派party
4.使用np.unique()函数查看colums:party这一列中有哪些元素
5.使用value_counts()函数,统计party列中各个元素出现次数,value_counts()是Series中的,无参,返回一个带有每个元素出现次数的Series
6.【知识点】使用groupby()函数,查看各个党派收到的政治献金总数contb_receipt_amt
7.查看具体每天各个党派收到的政治献金总数contb_receipt_amt。使用groupby([多个分组参数])
8.将表中日期格式转换为'yyyy-mm-dd'。日期格式,通过函数加map方式进行转换
9.查看老兵(捐献者职业)DISABLED VETERAN主要支持谁 :查看老兵们捐赠给谁的钱最多
10.找出各个候选人的捐赠者中,捐赠金额最大的人的职业以及捐赠额,通过query("查询条件来查找捐献人职业")
需求列表

1.读取文件usa_election.txt

data = pd.read_csv('./data/usa_election.txt')
data.head()

2.查看文件样式及基本信息

3.【知识点】使用map函数+字典,新建一列各个候选人所在党派party

data['party'] = data['cand_nm'].map(parties)
data.head()

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

data['party'].unique()

5.使用value_counts()函数,统计party列中各个元素出现次数,value_counts()是Series中的,无参,返回一个带有每个元素出现次数的Series

data['party'].value_counts()

6.【知识点】使用groupby()函数,查看各个党派收到的政治献金总数contb_receipt_amt

data.groupby(by='party',axis=0)['contb_receipt_amt'].sum()

7.查看具体每天各个党派收到的政治献金总数contb_receipt_amt。使用groupby([多个分组参数])

data.groupby(by=['party','contb_receipt_dt'],axis=0)['contb_receipt_amt'].sum()

8.将表中日期格式转换为'yyyy-mm-dd'。日期格式,通过函数加map方式进行转换

def transform_date(d):
    day,month,year = d.split('-')
    month = months[month]
    return '20'+year+'-'+str(month)+'-'+day

# date = data['contb_receipt_dt'].apply(transform_date)
date = data['contb_receipt_dt'].map(transform_date)
data['contb_receipt_dt'] = date
data.head()

9.查看老兵(捐献者职业)DISABLED VETERAN主要支持谁 :查看老兵们捐赠给谁的钱最多

# 1.先从原数据中将老兵这个职业对应的行数据取出
data['contbr_occupation'] == 'DISABLED VETERAN'
veteran_df = data.loc[data['contbr_occupation'] == 'DISABLED VETERAN']
veteran_df.head()

# 2.对竟选者进行分组
veteran_df.groupby(by='cand_nm',axis=0)['contb_receipt_amt'].sum()

10.找出各个候选人的捐赠者中,捐赠金额最大的人的职业以及捐赠额,通过query("查询条件来查找捐献人职业")

# 1.先找出捐赠金额最大的人
data['contb_receipt_amt'].max()

# 2.然后直接使用条件查询出结果
data.query('contb_receipt_amt == %f'%data['contb_receipt_amt'].max())

 

posted @ 2019-07-14 17:29  tiger_li  阅读(1045)  评论(2编辑  收藏  举报