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 ...
随机推荐
- Visual Studio Code如何校验yaml格式文件
1.yaml格式校验快捷键:Shift+Alt+F默认没有安装,这时候点击安装: 2.选择YAML Language Support by Red Hat 3.安装完成后,自动开启校验,当格式错误 ...
- 概率图模型 · 蒙特卡洛采样 · MCMC | 非常好的教学视频
https://www.bilibili.com/video/BV17D4y1o7J2?p=1 非常感谢!感觉学会一点了,应该能写作业了
- Feign 进行rpc 调用时使用ribbon负载均衡源码解析
转载请注明出处: Feign客户端接口的动态代理生成是基于JDK的动态代理来实现的,那么在所有的方法调用的时候最终都会走InvocationHandler接口的实现,默认就是ReflectiveFei ...
- 【C/C++】sscanf函数和正则表达式
此文所有的实验都是基于下面的程序:char str[10];for (int i = 0; i < 10; i++) str[i] = '!';执行完后str的值为str = "!!! ...
- [转帖]L4LB for Kubernetes: Theory and Practice with Cilium+BGP+ECMP
http://arthurchiao.art/blog/k8s-l4lb/ Published at 2020-04-10 | Last Update 2020-08-22 1. Problem De ...
- [转帖]RAC环境下误操作将数据文件添加到本地存储
https://www.cnblogs.com/jyzhao/p/7986729.html 今天碰到个有意思的事情,有客户在Oracle RAC环境,误操作将新增的数据文件直接创建到了其中一个节点的本 ...
- [转帖]tikv下线Pending Offline卡住排查思路
https://tidb.net/blog/5e960334?utm_source=tidb-community&utm_medium=referral&utm_campaign=re ...
- [转帖]Jmeter 参数化
一.Jmeter参数化概念 当使用JMeter进行测试时,测试数据的准备是一项重要的工作.若要求每次迭代的数据不一样时,则需进行参数化,然后从参数化的文件中来读取测试数据. 参数化是自动化测试脚本的一 ...
- [转帖]使用GCC编译器实测兆芯KX-U6780A的SPEC CPU2006成绩
https://baijiahao.baidu.com/s?id=1722775453962904303 兆芯KX-U6780A是一款8核2.7GHz的使用x86/AMD64指令集(架构)的国产C ...
- CentOS确认网口是否插入网线的办法
最近公司的机器存在网络问题, 部分网络总是不通, 比较奇怪. 最近一直想处理好. 第一步: 先查看网口的设备信息 可以使用 ip link show 可以讲网口信息都展示出来. 一般情况下 NO-C ...