您的位置:首页 > 其它

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

2017-12-21 11:22 399 查看

1.导入模块

import numpy as np
import pandas as pd
from pandas import Series,DataFrame


2.读取文件

#本地文件
election_data = pd.read_csv('usa_election.txt',low_memory=False)
election_data.head()




3.新建一列各个候选人所在的党派party——map(dir)

# 候选人和所在政党的映射字典
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'
}

#新建一列‘party',根据’cand_nm'列进行字典映射
election_data['party'] = election_data['cand_nm'].map(parties)


4.查看party列中有哪些元素——unique()

election_data['party'].unique()


5.统计party列中各个元素出现次数——value_counts()

election_data['party'].value_counts()


6.查看各个党派收到的政治献金总数——groupby()

election_data.groupby('party')['contb_receipt_amt'].sum()


7.统计每天各个党派收到的政治献金总数——groupby([多个分组参数])

election_data.groupby(['party','contb_receipt_dt'])['contb_receipt_amt'].sum()


8.将日期转换为Pandas的日期格式——map(func)

#定义映射函数

def transform_date(date):
day,month,year = date.split('-')
mon = months[month]
return str(mon)+'-'+str(day)+'-'+str(year)
#进行映射转换
election_data['contb_receipt_dt'] = election_data['contb_receipt_dt'].map(transform_date)


9.时间转换为时间数据类型并根据时间进行排序

转化为时间数据类型:pd.to_datetime()

排序:sort_values()

根据index_list创建新的索引:take(index_list)

election_data['contb_receipt_dt'] = pd.to_datetime(election_data['contb_receipt_dt'])

# 对contb_receipt_dt进行排序,拿到排序后的索引列表
take_list = election_data['contb_receipt_dt'].sort_values().index

# 再使用新的索引列表重新排布election_data
sort_election_data = election_data.take(take_list)


10.每天各政党所收政治献金数目——groupby([多个分组参数])

day_paty_amt = DataFrame(sort_election_data.groupby(['contb_receipt_dt','party'])['contb_receipt_amt'].sum())


11.将party从行级索引变成列索引——unstack()



stack函数会将数据从”表格结构“变成”花括号结构“,即将其行索引变成列索引,反之,unstack函数将数据从”花括号结构“变成”表格结构“,即要将其中一层的列索引变成行索引。

result = day_paty_amt.unstack(level=1)
result = result.fillna(value=0)


12.把索引变成列——Series.reset_index(col)

set_index

DataFrame可以通过set_index方法,可以设置单索引和复合索引。

DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)

append添加新索引,drop为False,inplace为True时,索引将会还原为列

reset_index

reset_index可以还原索引,重新变为默认的整型索引

DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=”)

level控制了具体要还原的那个等级的索引

drop为False则索引列会被还原为普通列,否则会丢失

result.reset_index('contb_receipt_dt')


13.找出各个候选人的捐赠者中,捐赠金额最大的人

election_data.groupby('cand_nm')['contb_receipt_amt'].max()


14.查询各候选人中捐赠金额最大的人的职业

election_data.query("contb_receipt_amt == value")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据分析
相关文章推荐