Pandas 美国竞选捐赠案例
import pandas as pd
"""
需求
1.加载数据
2.查看数据的基本信息
3.指定数据截取,将如下字段的数据进行提取,其他数据舍弃
cand_nm: 候选人姓名
contbr_nm : 捐赠人姓名
contbr_st:捐赠人所在州
contbr_employer : 捐赠人所在公司
contbr_occupation : 捐赠人职业
contb_receipt_amt : 捐赠数额 (美元
contb_receipt_dt : 捐款的日期对新数据进行总览,查看是否存在缺失数据
4.用统计学指标快速描述数值型属性的概要空值处理。
5.可能因为忘记填写或者保密等等原因,相关字段出现了空值,将其填充为NOT PROVIDE异常值处理。
6.将捐款金额<=0的数据删除
7.新建一列为各个候选人所在党派party
8.查看party这一列中有哪些不同的元素
9.统计party列中各个元素出现次数
10.查看各个党派收到的政治献金总数contb receipt amt
11.查看具体每天各个党派收到的政治献金总数contb_receipt_amt
12.将表中日期格式转换为'yyyy-mm-dd。
13.查看老兵(捐献者职业)DISABLED VETERAN主要支持谁
"""
# 1.加载数据
df = pd.read_csv("./usa_selection.txt")
# 2.查看数据的基本信息
print(df.info())
# 3.指定数据截取,将如下字段的数据进行提取,其他数据舍弃
df = df[["cand_nm", "contbr_nm", "contbr_st",
"contbr_employer", "contbr_occupation", "contb_receipt_amt", "contb_receipt_dt"]]
print(df.head())
# 4.用统计学指标快速描述数值型属性的概要空值处理。
print(df.describe())
# 5.可能因为忘记填写或者保密等等原因,相关字段出现了空值,将其填充为NOT PROVIDE异常值处理。
df.fillna(value="NOT PROVIDE", inplace=True)
print(df.info())
# 6.将捐款金额<=0的数据删除
index_0 = df.loc[df["contb_receipt_amt"] <= 0].index
df.drop(labels=index_0, axis=0, inplace=True)
print(df.info())
# 7.新建一列为各个候选人所在党派party
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'
}
df["partie"] = df["cand_nm"].map(parties)
print(df.head())
# 8.查看party这一列中有哪些不同的元素
print(df['partie'].unique())
# ['Republican' 'Democrat' 'Reform' 'Libertarian' nan]
# 9.统计party列中各个元素出现次数
print(df['partie'].value_counts())
# 10.查看各个党派收到的政治献金总数contb_receipt_amt
print(df.groupby(by="partie")["contb_receipt_amt"].sum())
# 11.查看具体每天各个党派收到的政治献金总数contb_receipt_amt
print(df.groupby(by=["contb_receipt_dt", "partie"])["contb_receipt_amt"].sum())
# 12.将表中日期格式转换为'yyyy-mm-dd。
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
}
def tranformDate(d):
day, month, year = d.split("-")
month = months[month]
return "20{0}-{1}-{2}".format(year, month, day)
df["contb_receipt_dt"] = df["contb_receipt_dt"].map(tranformDate,)
# 13.查看老兵(捐献者职业)DISABLED VETERAN主要支持谁
print(df.head())
old_man = df.loc[df["contbr_occupation"] == "DISABLED VETERAN"]
old_group = old_man.groupby(by="cand_nm")["contb_receipt_amt"].sum()
print(old_group)
Pandas 美国竞选捐赠案例的更多相关文章
- 数据分析06 /pandas高级操作相关案例:人口案例分析、2012美国大选献金项目数据分析
数据分析06 /pandas高级操作相关案例:人口案例分析.2012美国大选献金项目数据分析 目录 数据分析06 /pandas高级操作相关案例:人口案例分析.2012美国大选献金项目数据分析 1. ...
- python 数据分析--词云图,图形可视化美国竞选辩论
这篇博客从用python实现分析数据的一个完整过程.以下着重几个python的moudle的运用"pandas",""wordcloud"," ...
- Pandas数据处理+Matplotlib绘图案例
利用pandas对数据进行预处理然后再使用matplotlib对处理后的数据进行数据可视化是数据分析中常用的方法. 第一组例子(星巴克咖啡店) 假如我们现在有这样一组数据:星巴克在全球的咖啡店信息,如 ...
- Pandas 之 描述性统计案例
认识 jupyter地址: https://nbviewer.jupyter.org/github/chenjieyouge/jupyter_share/blob/master/share/panda ...
- javaSE第二十四天
第二十四天 363 1:多线程(理解) 363 (1)JDK5以后的Lock锁 363 A:定义 363 B:方法: 364 C:具体应用(以售票程序为例) 364 ...
- Java API —— 多线程(2)
1.JDK5中Lock锁的使用 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对 ...
- Android(java)学习笔记70:同步中的死锁问题以及线程通信问题
1. 同步弊端: (1)效率低 (2)如果出现了同步嵌套,就容易产生死锁问题 死锁问题及其代码 : (1)是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象 (2)同步代码块的 ...
- 面向对象的轮播js
1.自执行函数的前后要加分号 案例: ;(function(){})(); 2.面向对象的最大优势节省了许多内存 正式开写面向对象的轮播: <!DOCTYPE html> <html ...
- Android(java)学习笔记10:同步中的死锁问题以及线程通信问题
1. 同步弊端: (1)效率低 (2)如果出现了同步嵌套,就容易产生死锁问题 死锁问题及其代码 : (1)是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象 (2)同步代码块的 ...
- Python库-NumPy
NumPy是一个开源的Python科学计算库,用于快速处理任意维度的数组. 创建NumPy数组 #创建一维数组 list1 = [1,2,3,4] array1= np.array(list1)#用p ...
随机推荐
- asp.net 程序员常用工具
1 写作工具: Typora 2. 远程工具 ToDesk 3. 思维整理工具 XimindZen 4. 数据库客户端工具 Navicat Premium 15 5. 录音工具 楼月免费MP3录音软 ...
- poj 2533 LIS(最长上升序列)
***一道裸题, 思路:在g数组内往里加元素,一直扩大这个数组,每次查询的时候,用二分查找,时间复杂度O(nlog(n)) *** #include<iostream> #include& ...
- liunx上升级python2至python3
一.背景介绍 虚拟机的liunx系统CentOS7自带了python2.7.5,为使用方便需要换成最新的版本3.10.4 二.安装方法 1.安装升级GCC yum install -y gcc* op ...
- kafka 集群环境搭建
本文为博主原创,未经允许不得转载: 如果搭建单机节点 kafka 可看我的这篇博客: 搭建 kafka 集群环境,只需要在搭建单机 kafka 环境的基础上,多增加几个kafka 服务实例即可. 多增 ...
- Synchronized的使用及原理总结
本文为博主原创,未经允许不得转载 Synchronized的使用总结: 1.作用 原理 synchronized 的锁膨胀升级过程 对象的内存布局 锁的消除及逃逸分析 synchronized的方 ...
- 小程序:Now you can provide attr `wx:key` for a `wx:for` to improve performance. 的解决方案
在wx:for后面添加wx:key="key" 可消除警告 <view wx:for="{{thisWeekMovies}}" wx:for-index= ...
- [转帖]GB18030 编码
https://www.qqxiuzi.cn/zh/hanzi-gb18030-bianma.php GB18030编码采用单字节.双字节.四字节分段编码方案,具体码位见下文.GB18030向下兼容G ...
- oceanbase部署维护命令学习
oceanbase部署维护命令学习 背景 之前学习过TIDB数据库, 最近又准备学习一下Oceanbase数据库 发现其实两者还是比较相似的. 比较大的区别在于. TiDB是完全开源的, 并且比较明确 ...
- cri-docker的学习和了解-番外
cri-docker的学习和了解-番外 前言 因为已经有足足两年多没再详细接触K8S了. 然后利用两个晚上搭建了IPV6 SingleStack的K8S单机版 中间一直使用的docker的方式学习和工 ...
- Firewall-cmd 启用NAT开放内网机器通过能上网的机器访问外网的方法
Firewall-cmd 启用NAT开放内网机器通过能上网的机器访问外网的方法 背景说明 昨天的处置已经可以让外部可以使用唯一的电信IP地址访问内部交换机的服务器了. 但是今天的场景是想让内网交换机的 ...