任务要求

  1. 读入美国总统选举政治献金数据文件,合并三个文件的数据

  2. 查看数据基本信息

  3. 缺失值处理,(填充 ‘NOT PROVIDE’)

  4. 通过给定字典,添加候选人对应党派信息
    parties = {
    ‘Bachmann, Michelle’: ‘Republican’,
    ‘Romney, Mitt’: ‘Republican’,
    ‘Obama, Barack’: ‘Democrat’,
    “Roemer, Charles E. ‘Buddy’ III”: ‘Republican’,
    ‘Pawlenty, Timothy’: ‘Republican’,
    ‘Johnson, Gary Earl’: ‘Republican’,
    ‘Paul, Ron’: ‘Republican’,
    ‘Santorum, Rick’: ‘Republican’,
    ‘Cain, Herman’: ‘Republican’,
    ‘Gingrich, Newt’: ‘Republican’,
    ‘McCotter, Thaddeus G’: ‘Republican’,
    ‘Huntsman, Jon’: ‘Republican’,
    ‘Perry, Rick’: ‘Republican’
    }

  5. 统计不同党派获得政治献金的捐献总额。

  6. 按照职业汇总政治献金的总额,输出献金总额最大的前5个职业,注意需要做职业类型的去重。给出字典:
    occupation = {‘INFORMATION REQUESTED PER BEST EFFORTS’:‘NOT PROVIDE’,
    ‘INFORMATION REQUESTED’:‘NOT PROVIDE’,
    ‘C.E.O.’:‘CEO’,
    ‘LAWYER’:‘ATTORNEY’,
    ‘SELF’:‘SELF-EMPLOYED’,
    'SELF EMPLOYED ':‘SELF-EMPLOYED’}

  7. 通过数据可视化展示,各候选人获得的赞助总金额,注意需要先去除政治献金额小于 “0” 的异常数据

  8. 分析前两名的候选人:不同职业对他两人的支持程度、不同公司的支持度和不同州的支持度。

附加题:政治献金的时间分析(最早时间,那天最多,那天最少?)

部分内容分享

1、读取数据

import numpy as np
import pandas as pd
#1. 读入美国总统选举政治献金数据文件,合并三个文件的数据
c1 = pd.read_csv('usa_elect/contb_01.csv')
c2 = pd.read_csv('usa_elect/contb_02.csv')
c3 = pd.read_csv('usa_elect/contb_03.csv')
c = pd.concat((c1,c2,c3))
#c = pd.concat([c1,c2,c3],axis = 0) #按列合并

2、查看基本信息

#2.  查看数据基本信息
print(c.head())   #列出前五个数据
print(c.info())   #查看每一列基本信息(可看出缺失值)
print(c.describe())   #表示数据信息(可看出异常值)



3、缺失值处理

#3.  缺失值处理,(填充 ‘NOT PROVIDE’)
c.fillna('NOT PROVIDE',inplace = True)
print(c.info())   #通过info验证是否填充成功

4、添加党派信息

#4.  通过给定字典,添加候选人对应党派信息
parties = {'Bachmann, Michelle': 'Republican','Romney, Mitt': 'Republican','Obama, Barack': 'Democrat',"Roemer, Charles E. 'Buddy' III": 'Republican','Pawlenty, Timothy': 'Republican','Johnson, Gary Earl': 'Republican','Paul, Ron': 'Republican','Santorum, Rick': 'Republican','Cain, Herman': 'Republican','Gingrich, Newt': 'Republican','McCotter, Thaddeus G': 'Republican','Huntsman, Jon': 'Republican','Perry, Rick': 'Republican'           }
#print(c.cand_nm.unique())
c['party'] =  c['cand_nm'].map(parties)
print(c.head())

5、统计捐款额度

#5.  统计不同党派获得政治献金的捐献总额。
print(c['party'].value_counts())  #捐献次数
print(c.groupby(['party'])['contb_receipt_amt'].sum()) #捐献金额

6、lambda妙用

#6.  按照职业汇总政治献金的总额,输出献金总额最大的前5个职业,注意需要做职业类型的去重。给出字典
occupation = {'INFORMATION REQUESTED PER BEST EFFORTS':'NOT PROVIDE','INFORMATION REQUESTED':'NOT PROVIDE','C.E.O.':'CEO','LAWYER':'ATTORNEY','SELF':'SELF-EMPLOYED','SELF EMPLOYED ':'SELF-EMPLOYED'}
c['contbr_occupation'] = c['contbr_occupation'].map(lambda i : occupation.get(i,i))
goupy = c.groupby(['contbr_occupation'])['contb_receipt_amt'].sum()
print(goupy.sort_values(ascending = False).head())

7、可视化赞助金额

#7.  通过数据可视化展示,各候选人获得的赞助总金额,注意需要先去除政治献金额小于 “0” 的异常数据
c2 = c[c['contb_receipt_amt'] > 0]
#print('原始数据:',c.shape,'   处理后数据:',c2.shape)
image = c2.groupby(['cand_nm' ])['contb_receipt_amt'].sum().sort_values(ascending = False)[:8]
image.plot(kind = 'bar')  #取前八名做图,直接绘制饼状图

8、对比Obama和Romney的支持情况

#8.  分析前两名的候选人:不同职业对他两人的支持程度、不同公司的支持度和不同州的支持度。
#第8题方法一:对两个候选人分别提取(此方法效率偏低,故中途作废)
Obama = c2[c2['cand_nm'] == 'Obama, Barack']
Romney = c2[c2['cand_nm'] == 'Romney, Mitt']
print(Obama.groupby(['contbr_occupation'])['contb_receipt_amt'].sum().sort_values(ascending = False).head())
print(Romney.groupby(['contbr_occupation'])['contb_receipt_amt'].sum().sort_values(ascending = False).head())#第8题方法二:采用透视表获取数据
c3 = c2.query("cand_nm == 'Obama, Barack' or cand_nm == 'Romney, Mitt'")#选取含Obama、Romney的数据
print(c3.cand_nm.unique()) #查看数据是否提取成功
#(1)分析不同职业
pivot1 = c3.pivot_table('contb_receipt_amt',index='contbr_occupation',columns='cand_nm',aggfunc='sum',fill_value=0)
pivot1 = pivot1[pivot1.sum(axis = 1)>1000000]  #提取献金金额超过1million的群体进行分析
pivot1.plot(kind = 'bar')
#(2)分析不同公司
pivot2 = c3.pivot_table('contb_receipt_amt',index='contbr_employer',columns='cand_nm',aggfunc='sum',fill_value=0)
pivot2 = pivot2[pivot2.sum(axis = 1)>1000000]  #提取献金金额超过1million的群体进行分析
pivot2.plot(kind = 'bar')
#(3)分析不同State
pivot3 = c3.pivot_table('contb_receipt_amt',index='contbr_st',columns='cand_nm',aggfunc='sum',fill_value=0)
pivot3 = pivot3[pivot3.sum(axis = 1)>10000000]  #提取献金金额超过10million的洲进行分析
pivot3.plot(kind = 'bar')



9、政治献金的时间分析

#附加题:政治献金的时间分析(最早时间,那天最多,那天最少?)
c2['contb_receipt_dt'] = pd.to_datetime(c2['contb_receipt_dt'])  #将str转datetime类型
print(c2.dtypes)  #观察数据类型变化
#最早时间
#print(c2['contb_receipt_dt'].describe())
print("政治献金最早的时间:",min(c2['contb_receipt_dt']))
#那天最多,那天最少(直接分组排个序最大值和最小值即为答案)
c2.groupby('contb_receipt_dt')['contb_receipt_amt'].sum().sort_values(ascending = False)

参考资料

2012美国大选献金项目数据分析(有史以来最全面)

千峰Python教程

关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解

【Python】美国大选献金项目数据分析(concat(),lambda(),groupby(),pivot_table())相关推荐

  1. 2012美国大选献金项目数据分析

    文章目录 1.数据载入与预览 1.1 数据加载 1.2 数据合并 1.3 数据预览 1.3.1 查看是否有空值 1.3.2用统计学指标快速描述数值型属性的概要 2.数据的预处理 2.1 数据清洗 2. ...

  2. 数据分析---2012美国大选献金项目数据分析

    需求: 1. 加载数据 df = pd.read_csv('./data/usa_election.txt') 2. 对新数据进行总览,查看是否存在缺失数据: 方法一:isnull.notnull.a ...

  3. 项目3:美国大选献金目数据分析

    """ 需求: 1.读取数据 2.查看是否有缺失数据 3.用统计学指标快速描述数值型属性的概要 4.空值处理.可能因为忘记填写保密等原因,相关字段出现了空值,将其填充为N ...

  4. 【数据分析】使用pandas和numpy分析美国大选献金项目

    1. 数据载入与总览 1.1 数据加载 #绘图工具 import matplotlib.pyplot as plt %matplotlib inline #数据处理工具 import numpy as ...

  5. 2012美国大选献金项目(最详细解释)

    1. 数据载入和总览 import numpy as npimport pandas as pdfrom pandas import Series,DataFrame 1.1 数据载入 df1 = p ...

  6. 美国大选献金项目学习笔记

    目录 要求 代码: 要求 代码: import numpy as np import pandas as pddf = pd.read_csv('./data/usa_election.txt')# ...

  7. 3 Python数据分析 美国各州人口分析案例 Pandas高级操作 美国大选献金案例 matplotlib

    Python数据分析 1 案例 美国各州人口分析 1.1 数据介绍 数据来源:https://github.com/jakevdp/data-USstates/ 1.1.1 州人口数量表 state- ...

  8. 数据分析项目3-美国大选献金分析

    需求     加载数据     查看数据的基本信息     指定数据截取,将如下字段的数据进行提取,其他数据舍弃      cand_nm: 候选人姓名      contbr_nm:捐赠人所在州   ...

  9. 女性更不容易受害? Python 美国警察枪击案探索性数据分析

    2014年在密苏里州一名叫做弗格森(Ferguson)的警察杀害了迈克尔·布朗(Michael Brown)后,美国开始了一场抗议警察暴力对待黑人的运动-Black Lives Matter(黑人的命 ...

  10. Chapter3美国大选金献项目数据分析

    8:46 加载数据 查看数据的基本信息/对新数据进行总览,查看是否存在缺失数据 快速描述数值型属性的概要 空值处理,将空值填充为NOT PROVIDE 异常值处理 新建一列为各个候选人所在的党派par ...

最新文章

  1. Java常用类之【八种基本数据类型】
  2. 推荐:常见NLP模型的代码实现(基于TensorFlow和PyTorch)
  3. Linux打开rtf文档,在linux下设置开机自动启动程序的方法_精品.rtf
  4. C++中virtual关键字的用法
  5. 通过超分辨率重构来提高二维码的对比度
  6. MsChart5 累计柱状图 分类统计
  7. 延迟和带宽:时延简介、最后一英里、核心网带宽、网络边缘
  8. 赛码网编程题--打字(Java全A)
  9. vfp spt连接mysql_VFP与SQL远程异构数据库
  10. pp助手可以刷机吗android,pp助手刷机 pp助手怎么刷机
  11. POI设置导出的EXCEL锁定指定的单元格
  12. 对vulhub靶机THM-ContainMe-v4的渗透测试过程
  13. matlab图像编码实验,数字图像处理实验和matlab程序代码数字图像处理实验.doc
  14. SQL获取两个日期之间的天数
  15. 未来感html5模板,未来感的家
  16. Android 关于Android权重的真正理解
  17. Dota英雄卡尔有多少个技能?
  18. CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`
  19. SpringCloud从入门到精通(超详细文档)
  20. 未解决问题之一呃呃呃(不认识)

热门文章

  1. WIN7 SP1 0x8007000D错误
  2. Selenium—获取页面的title,url;使用句柄方式切换窗口
  3. 拒绝平庸,这10个鲜为人知的实用网站,让你受益无穷!
  4. 穿越沙漠matlab,中国五大经典沙漠穿越
  5. transformer中的相对位置偏置的介绍(relative position bias)
  6. 斗地主 -(一) 如何开发斗地主
  7. alpha在matlab中啥意思,alpha是什么
  8. Unity系统Cube的法线
  9. windows10更新怎么关闭
  10. u盘推荐知乎_市面上的U盘怎么选择?U盘那个牌子好?