Python数据分析实例五、US 大选捐款数据分析

美国联邦选举委员会 (FEC) 公布了对政治竞选活动的贡献数据。这包括投稿人姓名、职业和雇主、地址和投款金额。2012 年美国总统大选的贡献数据以单个 150 MB 的 CSV 文件P00000001-ALL.csv形式提供,该文件可以通过以下pandas.read_csv加载:

import pandas as pdfec = pd.read_csv("datasets/fec/P00000001-ALL.csv", low_memory=False)
print(fec.info())
print(fec.iloc[123]) # 示例记录

加载成DataFrame输出该对象内容信息:

864f6cce2f0a463285eb7b7fce3bcbf1.png

这个DataFrame 中的示例记录如下所示:

9af7a09de2c44067b0f7061e66240264.png

数据中没有政党隶属关系,因此添加此关系数据非常有用。可以使用 unique 获取所有唯一政治候选人的列表:

import pandas as pdfec = pd.read_csv("datasets/fec/P00000001-ALL.csv", low_memory=False)unique_cands = fec["cand_nm"].unique()
print(unique_cands)
print(unique_cands[2])

unique_cands 输出:

['Bachmann, Michelle' 'Romney, Mitt' 'Obama, Barack'
 "Roemer, Charles E. 'Buddy' III" 'Pawlenty, Timothy' 'Johnson, Gary Earl'
 'Paul, Ron' 'Santorum, Rick' 'Cain, Herman' 'Gingrich, Newt'
 'McCotter, Thaddeus G' 'Huntsman, Jon' 'Perry, Rick']

unique_cands[2] 输出: Obama, Barack

我们使用字典来表示党派关系:

# 用字典表示候选人所属政党
parties = {"Bachmann, Michelle": "Republican", "Cain, Herman": "Republican", "Gingrich, Newt": "Republican", "Huntsman, Jon": "Republican", "Johnson, Gary Earl": "Republican","McCotter, Thaddeus G": "Republican","Obama, Barack": "Democrat","Paul, Ron": "Republican","Pawlenty, Timothy": "Republican","Perry, Rick": "Republican","Roemer, Charles E. 'Buddy' III": "Republican","Romney, Mitt": "Republican","Santorum, Rick": "Republican"}

现在,使用此字典映射和 Series 对象上的 map 方法,可以从候选人名字中计算政党数组:

import pandas as pdfec = pd.read_csv("datasets/fec/P00000001-ALL.csv", low_memory=False)
print(fec.info())
print(fec.iloc[123]) # 示例记录unique_cands = fec["cand_nm"].unique()# 用字典表示候选人所属政党
parties = {"Bachmann, Michelle": "Republican", "Cain, Herman": "Republican", "Gingrich, Newt": "Republican", "Huntsman, Jon": "Republican", "Johnson, Gary Earl": "Republican","McCotter, Thaddeus G": "Republican","Obama, Barack": "Democrat","Paul, Ron": "Republican","Pawlenty, Timothy": "Republican","Perry, Rick": "Republican","Roemer, Charles E. 'Buddy' III": "Republican","Romney, Mitt": "Republican","Santorum, Rick": "Republican"}print(fec["cand_nm"][123456:123461])
print(fec["cand_nm"][123456:123461].map(parties))# 将政党关系映射作为party列添加到fec对象
fec["party"] = fec["cand_nm"].map(parties)
fec_party_count = fec["party"].value_counts()
print(fec_party_count)

print(fec["cand_nm"][123456:123461]) 输出:

ea7f69d3e58a436b8f0ce34155fdbb82.png

print(fec["cand_nm"][123456:123461].map(parties)) 输出:

a7f36474ab724ee3b07149713a82461d.png

print(fec_party_count) 输出:

0fb67458b7754d6eb9eed1a7b594143e.png

准备几个数据准备点。此数据包括供款和退款,为了简化分析,我们将数据集限制为正贡献(捐款)。由于 Barack Obama 和 Mitt Romney 是主要的两位候选人,我们还准备一个子集,其中只包含对他们的竞选活动是有所贡献的数据子集:

import pandas as pdfec = pd.read_csv("datasets/fec/P00000001-ALL.csv", low_memory=False)
print(fec.info())
print(fec.iloc[123]) # 示例记录unique_cands = fec["cand_nm"].unique()# 用字典表示候选人所属政党
parties = {"Bachmann, Michelle": "Republican", "Cain, Herman": "Republican", "Gingrich, Newt": "Republican", "Huntsman, Jon": "Republican", "Johnson, Gary Earl": "Republican","McCotter, Thaddeus G": "Republican","Obama, Barack": "Democrat","Paul, Ron": "Republican","Pawlenty, Timothy": "Republican","Perry, Rick": "Republican","Roemer, Charles E. 'Buddy' III": "Republican","Romney, Mitt": "Republican","Santorum, Rick": "Republican"}# 将政党关系映射作为party列添加到fec对象
fec["party"] = fec["cand_nm"].map(parties)
fec_party_count = fec["party"].value_counts()temp = (fec["contb_receipt_amt"] > 0).value_counts()
print(temp)
fec = fec[fec["contb_receipt_amt"] > 0]
fec_mrbo = fec[fec["cand_nm"].isin(["Obama, Barack", "Romney, Mitt"])]

一、按职业及雇主划分的捐款统计数字

按职业划分的捐款量是一个经常被研究的统计数据。例如,律师倾向于向民主党人捐赠更多的钱,而企业高管倾向于向共和党人捐赠更多。首先,按职业划分的捐赠总数可以用 value_counts 计算:

import pandas as pdfec = pd.read_csv("datasets/fec/P00000001-ALL.csv", low_memory=False)
#print(fec.info())
#print(fec.iloc[123]) # 示例记录unique_cands = fec["cand_nm"].unique()# 用字典表示候选人所属政党
parties = {"Bachmann, Michelle": "Republican", "Cain, Herman": "Republican", "Gingrich, Newt": "Republican", "Huntsman, Jon": "Republican", "Johnson, Gary Earl": "Republican","McCotter, Thaddeus G": "Republican","Obama, Barack": "Democrat","Paul, Ron": "Republican","Pawlenty, Timothy": "Republican","Perry, Rick": "Republican","Roemer, Charles E. 'Buddy' III": "Republican","Romney, Mitt": "Republican","Santorum, Rick": "Republican"}# 将政党关系映射作为party列添加到fec对象
fec["party"] = fec["cand_nm"].map(parties)
fec_party_count = fec["party"].value_counts()temp = (fec["contb_receipt_amt"] > 0).value_counts()
#print(temp)
fec = fec[fec["contb_receipt_amt"] > 0]
fec_mrbo = fec[fec["cand_nm"].isin(["Obama, Barack", "Romney, Mitt"])]# 按职业划分 统计捐赠量 由于数据量太大取前10个观察
temp10 = fec["contbr_occupation"].value_counts()[:10]
print(temp10)

输出按职业划分统计的捐赠量(前10个):

cbc8c5b154b74849a3f0714044cda7ee.png

从上面的职业输出可以看出,许多人的职业名称虽然不同,但指的是相同的基本工作类型。下面我们用代码实现从一个职业映射到另一个职业来,清理其中一些相同类型职业。请注意下面代码中使用 dict.get 允许没有映射的职业也能“传递”的 “技巧”:

import pandas as pdfec = pd.read_csv("datasets/fec/P00000001-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/60958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3项目搭建-3-Pinia的使用

Pinia 是集中状态管理工具 基本用法 Pinia 是 Vue 的专属的最新状态管理库,是 Vuex 状态管理工具的替代品 官方文档:pinia官方文档 找到开始目录,根据文档安装和入门 pinia,启用一个新的终端,输入指令 npm install…

SAP开发语言ABAP开发入门

1. 了解ABAP开发环境和基础知识 - ABAP简介 - ABAP(Advanced Business Application Programming)是SAP系统中的编程语言,主要用于开发企业级的业务应用程序,如财务、物流、人力资源等模块的定制开发。 - 开发环境搭建 - 首先需…

修改bag的frame_id的工具srv_tools

在使用数据集导航或者建图时,bag中的点云或者其他话题的frame_id没有和需要的对应 1.创建工作空间 2.cd xxxx/src 3.git clone https://github.com/srv/srv_tools.git cd .. catkin_make source ./devel/setup.bash rosrun bag_tools change_frame_id.py -t /要改…

IDEA2023版本配置项目全局编码

IDEA默认的项目编码是UTF-8,有时候拿到别人的代码使用的编码是GBK,虽然可以在idea右下角进行修改,但是一个一个的修改太慢了。所以需要去进行该项目的编码全局配置。接下来直接讲步骤,以IDEA2023版本为例。 第一步 File>Sett…

大数据学习18之Spark-SQL

1.概述 1.1.简介 Spark SQL 是 Apache Spark 用于处理结构化数据的模块。 1.2.历史 1.2.1.Shark Hadoop诞生初期,Hive是唯一在Hadoop上运行的SQL-on-Hadoop工具,MR的中间计算过程产生了大量的磁盘落地操作,消耗了大量的I/O,降低…

【Android】Service使用方法:本地服务 / 可通信服务 / 前台服务 / 远程服务(AIDL)

1 本地Service 这是最普通、最常用的后台服务Service。 1.1 使用步骤 步骤1:新建子类继承Service类:需重写父类的onCreate()、onStartCommand()、onDestroy()和onBind()方法步骤2:构建用于启动Service的Intent对象步骤3:调用st…

QML学习 —— 34、视频媒体播放器(附源码)

效果 说明 您可以单独使用MediaPlayer播放音频内容(如音频),也可以将其与VideoOutput结合使用以渲染视频。VideoOutput项支持未转换、拉伸和均匀缩放的视频演示。有关拉伸均匀缩放演示文稿的描述,请参见fillMode属性描述。 播放可能出错问题 出现的问题:      DirectS…

Spring MVC练习(前后端分离开发实例)

White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🐹今日诗词:二十五弦弹夜月,不胜清怨却飞来🐹 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏 ⛳️点赞 ☀️收藏⭐️关注&#x1f4…

如何把大模型调教成派大星?

目录 主要内容模型图实验结果如何把大模型变成派大星?chatglm3-6B 数据集准备代码运行微调结果 文章声明:非广告,仅个人体验:参考文献:https://www.aspiringcode.com/content?id17197387451937&uid291a2ae1546b48…

国土安全部发布关键基础设施安全人工智能框架

美国国土安全部 (DHS) 发布建议,概述如何在关键基础设施中安全开发和部署人工智能 (AI)。 https://www.dhs.gov/news/2024/11/14/groundbreaking-framework-safe-and-secure-deployment-ai-critical-infrastructure 关键基础设施中人工智能的角色和职责框架 https:/…

QML TableView 实例演示 + 可能遇到的一些问题(Qt_6_5_3)

一、可能遇到的一些问题 Q1:如何禁用拖动? 在TableView下加一句代码即可: interactive: false 补充:这个属性并不专属于TableView,而是一个通用属性。很多Controls下的控件都可以使用,其主要作用就是控…

C基础上机题目51_55

51.字符数组x中存有任意一串字符;请编制函数,按给定的替代关系对数组x中的所有字符进行替代,仍存入数组x的对应的位置上,最后调用函数把结果x输出。 替代关系:f(p)p*11%256 (p是数组中某一个字符的ASCII值&#xff0c…

03-微服务搭建

1、搭建分布式基本环境 分布式组件 功能 SpringCloud Alibaba - Nacos 注册中心(服务发现/注册)、配置中心(动态配置管理) SpringCloud Alibaba - Sentinel 服务容错(限流、降级、熔断) SpringCloud …

Java八股(一)

目录 1.JVM、JRE、JDK之间的关系 2.static关键字作用(通俗版) 3.面向对象、面向过程 4.私有方法 5.Java代码执行与编译 6.IOC 1.JVM、JRE、JDK之间的关系 Java一次编写到处运行,可移植性好,保证这一点的就是iava虚拟机JVM …

Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

yum install 报错: Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64 CentOS7的SCL源在2024年6月30日停止维护了。 当scl源里面默认使用了centos官方的地址,无法连接,需要替换为阿里云。 cd /etc/yum.repos.d/ 找到 CentOS-SCLo-scl.repo 和…

Vue前端开发-slot传参

slot 又称插槽,它是在子组件中为父组件提供的一个占位符,使用来表示,通过这个占位符,父组件可以向中填充任意的内容代码,这些代码将自动替换占位符的位置,从而轻松实现在父组件中控制子组件内容的需求。 作…

如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack

今天我们来聊聊如何在 Ubuntu 22.04 服务器上安装 ELK Stack,并集成 Nginx 作为 Web 服务器,同时使用 Let’s Encrypt Certbot 进行 SSL 认证。ELK Stack,包括 Elasticsearch、Logstash 和 Kibana,是一套强大的工具,用…

快速理解微服务中Sentinel怎么实现限流

Sentinel是通过动态管理限流规则,根据定义的规则对请求进行限流控制。 一.实现步骤 1.定义资源:在Sentinel中,资源可以是URL、方法等,用于标识需要进行限流的请求;(在Sentinel中,需要我们去告诉Sentinel哪些…

基于单片机的智慧小区人脸识别门禁系统

本设计基于单片机的智慧小区人脸识别门禁系统。由STM32F103C8T6单片机核心板、显示模块、摄像头模块、舵机模块、按键模块和电源模块组成。可以通过摄像头模块对进入人员人脸数据进行采集,识别成功后,舵机模块动作,模拟门禁打开,门…

llama-factory 系列教程 (七),Qwen2.5-7B-Instruct 模型微调与vllm部署详细流程实战

文章目录 介绍llama-factory 安装装包下载模型 微调模型数据集训练模型 微调后的模型推理 介绍 时隔已久的 llama-factory 系列教程更新了。本篇文章是第七篇,之前的六篇,大家酌情选看即可。 因为llama-factory进行了更新,我前面几篇文章的实…