提取码:8828 (本文用到的文档数据)

  • #导入工具包
    import numpy as np
    import pandas as pd
    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'           }
  • #导入政治献金的 啊、三个表
    import random
  • contb1=pd.read_csv('contb_01.csv')
    contb2=pd.read_csv('contb_02.csv')
    contb3=pd.read_csv('contb_03.csv')
  • # 展示第一张表的  前5个数据
    contb1.head(3)

  • # 展示 第一张表的关键信息
    contb1.info()

  • #把三张表拼接在一起
    contb = pd.concat((contb1,contb2,contb3),axis=0)contb.head(3)
  • contb.info()

  • # 主表中各个字段的定义
    cand_nm   候选人的姓名
    contbr_nm 选举人姓名
    contbr_st 选举人所在的州
    contbr_employer 选举人的职位
    contbr_occupation 选举人的行业
    contb_receipt_amt 政治献金的数目
    contb_receipt_dt 捐赠的时间
  • # 候选人数据,unique 去除重复的数据
    contb['cand_nm'].unique()

  • # 采用  map 映射,将候选人的党派作为新的一列添加到数据中
  • contb['party'] = contb['cand_nm'].map(parties)
    contb.head()

  • # 找到关于奥巴马的信息
    aobama=contb.loc[contb['cand_nm']=='Obama, Barack']
    # 给奥巴马的所有的政治献金
    value=aobama.groupby(['cand_nm'])['contb_receipt_amt'].sum()
    value

  • # 查出有多少党派
    contb['party'].unique() 

  • #查出各个党派被捐助的次数
    # 第一种方法
    count=contb.groupby('party').count()
    # 按照降序进行排列
    count.sort_values(by="cand_nm",ascending=False).reset_index()

  • # 各个党派被捐助的次数
    contb['party'].value_counts()

  • # 绘制各个党派捐助的次数的  柱形图
    contb['party'].value_counts().plot(kind="bar")

  • # 各个党派政治献金的总数
    contb.groupby('party')["contb_receipt_amt"].sum().plot(kind="line")

  • contb.groupby('party')['contb_receipt_amt'].mean().plot(kind="line")

  • contb.columns

  • # 先不考虑时间类型
    # 多分组  按照党派 按照时间进行 显示数据
    #unstack  参数level = -1 将最后一列转化为 行
  • temp=contb.groupby(['contb_receipt_dt','party'])['contb_receipt_amt'].sum().unstack(level=-1,fill_value=0)
  • temp.sort_index()

  • temp.info()

  • #获取当前的时间
    now=pd.datetime.now()
    now
  • #时间格式
    # 2021-01-05
    #时间属于数值类型 往前推一天,时间还可以进行排序
    pd.to_datetime(np.array(["2021-09-8","8-MAY-21"]))

  • # 输入外国时间的格式转化为中文的时间格式
    def map_datetime(x):day,month,year = x.split("-")# 根据月份的字典得到 月份具体指m = months[month]return "20{}-{}-{}".format(year,m,day)
  • map_datetime("8-MAY-21")

  • party_dt = contb.groupby(['contb_receipt_dt','party'])['contb_receipt_amt'].sum().unstack(level=-1,fill_value=0)
    party_dt.sort_index(inplace=True)
    party_dt.plot(kind="line")

  • #每天政治献金的累计数 ,线性图
    party_dt.cumsum().plot(kind="line")

#那几个月是竞选的高峰期
#对月份进行分组,月份找出来,使用map的方式

In [91]:

  • #如果是时间类型,不需要那么解决,时间类型有它专门的分组处理方案
    # 重采样 用于时间分组,前提是类型必须是 以时间类型作为发型索引
    contb.info()

  • temp = contb.set_index('contb_receipt_dt')
    temp.resample("Y")["contb_receipt_amt"].sum().plot(kind="bar")
    
  • Out[175]:

  • # 找出每个月的政治献金的总数
    temp.resample("M")["contb_receipt_amt"].sum().plot(kind="bar")

  • # 求出每个党派  每隔月政治献金的总数,并绘制图形
    # 把时间设置成索引
    contb=contb.set_index('contb_receipt_dt')
    contb
    contb.groupby(['contb_receipt_dt','party'])['contb_receipt_amt'].sum().unstack(level=-1,fill_value=0).resample("M").sum().plot(kind="bar")

  • # 如果是2 分组的逻辑,可以直接使用透视表解决
    pd.pivot_table(contb,index="contb_receipt_dt",columns="party",values="contb_receipt_amt",aggfunc=sum,fill_value=0).resample("M").sum().plot(kind="bar")

  • # 找出最有竞争力的两个人 列表
    good_man_names = contb.groupby('cand_nm')['contb_receipt_amt'].sum().sort_values(ascending=False)[:2].index
    good_man_names

  • # 最有竞争力的 两个人的条件
    condition = (contb['cand_nm']==good_man_names[0])|(contb['cand_nm']==good_man_names[1])# 根据条件 找出最有竞争力的两个人
    good_man = contb.loc[condition ]
    #得到最有竞争力的两个人
    gooodTwo=good_man['cand_nm'].unique()
    #得到的是 numpy的数组
    type(gooodTwo)

  • VETERAN =contb.loc[contb['contbr_occupation']=='DISABLED VETERAN']
    VETERAN#从数量看  老兵支持谁
    VETERAN['cand_nm'].value_counts()

  • #从政治献金的额度 看老兵都支持税
    VETERAN.groupby('cand_nm')['contb_receipt_amt'].sum().sort_values(ascending=False)

2012 年美国总统候选人政治献金 数据分析(numpy+pandas)相关推荐

  1. pandas - 案例(美国2012年总统候选人政治献金数据分析)

    # 提供数据months = {'JAN' : 1, 'FEB' : 2, 'MAR' : 3, 'APR' : 4, 'MAY' : 5, 'JUN' : 6,'JUL' : 7, 'AUG' : ...

  2. 美国2012政治献金数据分析(附有源数据和题目)

    读取文件usa_election.txt 查看文件样式及基本信息 指定数据截取,将如下字段的数据进行提取,其他数据舍去: cand_nm :候选人姓名 contbr_nm :捐赠人姓名 contbr_ ...

  3. OSChina 周六乱弹 ——快来看美国总统候选人怎么被打脸

    2019独角兽企业重金招聘Python工程师标准>>> 我就知道你们喜欢段子! 来首音乐表达下心情 今天有人发现了一个大新闻呢, @景愿 : @红薯 你资料里居然把自己定位为&quo ...

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

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

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

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

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

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

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

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

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

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

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

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

  10. 支持区块链技术的前星巴克CEO Howard Schultz计划参选美国总统

    点击上方 "蓝色字" 可关注我们! 暴走时评: 亿万富翁霍华德·舒尔茨(Howard Schultz)是星巴克前首席执行官,同时也是一名区块链支持者.比特币抨击者,由于厌恶美国政治 ...

最新文章

  1. 分享Kali Linux 2017年第12周镜像文件
  2. apply通过实例理解
  3. 一、cocos2dx概念简介
  4. 安装ssr_12月23日先锋首测启动,累计登录3天必得SSR!
  5. Git之如何解决sourceTree已经pull全部下来但是本地没有更新的问题
  6. DBCC SHRINKFILE收缩日志/收缩数据库/收缩文件
  7. webpack打包原理
  8. 量子计算机的系统论思考,量子计算机发展带来的思考..doc
  9. matlab 神经网络工具箱的实用
  10. Codeforces Round #753 (Div. 3)E. Robot on the Board 1
  11. tsql 和 clr 的性能实测比对
  12. JavaScript 封装对象与强制类型转换
  13. 【Java】我的世界Java版外挂制作 [0] - 配置环境
  14. python 学生成绩统计
  15. 关于DNS污染问题的通用解决方案
  16. 单体架构与微服务架构区别
  17. Android Path之Direction.CW、Direction.CCW
  18. Python绝技第一章 入门 python3实现密码破解
  19. QT Quick项目简介
  20. ZOJ4062 Plants vs. Zombies 二分

热门文章

  1. Axure实战案例——页面设计
  2. 计算机网络--物理层(全)
  3. phyton做九九乘法表
  4. Oracle9i的1467错误
  5. “长大真的很没意思,连快乐都裹着一层苦”
  6. 科技爱好者周刊(第 194 期):悲观者正确,乐观者成功
  7. 链塔年会圆桌论坛实录
  8. pytorch中的pad_sequence、pack_padded_sequence和pad_packed_sequence函数
  9. 【板栗糖GIS】wps——如何解决WPS 任务栏图片白块
  10. 【答学员问】虚拟机不能正常启动,提示找不到VMX二进制文件