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 美国竞选捐赠案例的更多相关文章

  1. 数据分析06 /pandas高级操作相关案例:人口案例分析、2012美国大选献金项目数据分析

    数据分析06 /pandas高级操作相关案例:人口案例分析.2012美国大选献金项目数据分析 目录 数据分析06 /pandas高级操作相关案例:人口案例分析.2012美国大选献金项目数据分析 1. ...

  2. python 数据分析--词云图,图形可视化美国竞选辩论

    这篇博客从用python实现分析数据的一个完整过程.以下着重几个python的moudle的运用"pandas",""wordcloud"," ...

  3. Pandas数据处理+Matplotlib绘图案例

    利用pandas对数据进行预处理然后再使用matplotlib对处理后的数据进行数据可视化是数据分析中常用的方法. 第一组例子(星巴克咖啡店) 假如我们现在有这样一组数据:星巴克在全球的咖啡店信息,如 ...

  4. Pandas 之 描述性统计案例

    认识 jupyter地址: https://nbviewer.jupyter.org/github/chenjieyouge/jupyter_share/blob/master/share/panda ...

  5. javaSE第二十四天

    第二十四天    363 1:多线程(理解)    363 (1)JDK5以后的Lock锁    363 A:定义    363 B:方法:    364 C:具体应用(以售票程序为例)    364 ...

  6. Java API —— 多线程(2)

    1.JDK5中Lock锁的使用 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对 ...

  7. Android(java)学习笔记70:同步中的死锁问题以及线程通信问题

    1. 同步弊端: (1)效率低 (2)如果出现了同步嵌套,就容易产生死锁问题 死锁问题及其代码 : (1)是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象 (2)同步代码块的 ...

  8. 面向对象的轮播js

    1.自执行函数的前后要加分号 案例: ;(function(){})(); 2.面向对象的最大优势节省了许多内存 正式开写面向对象的轮播: <!DOCTYPE html> <html ...

  9. Android(java)学习笔记10:同步中的死锁问题以及线程通信问题

    1. 同步弊端: (1)效率低 (2)如果出现了同步嵌套,就容易产生死锁问题 死锁问题及其代码 : (1)是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象 (2)同步代码块的 ...

  10. Python库-NumPy

    NumPy是一个开源的Python科学计算库,用于快速处理任意维度的数组. 创建NumPy数组 #创建一维数组 list1 = [1,2,3,4] array1= np.array(list1)#用p ...

随机推荐

  1. docker 镜像管理之 overlay2 最佳实践

    1. Docker 镜像 Docker 镜像是个只读的容器模板,它组成了 Docker 容器的静态文件系统运行环境 rootfs,是启动 Docker 容器的基础. Docker 镜像是容器的静态视角 ...

  2. SpringCloud集成Seata并使用Nacos做注册中心与配置中心

    本文为博主原创,未经允许不得转载: 目录: 1. 下载并启动Seata Server,并指定nacos作为配置中心和注册中心 2. 同步seata server的配置到nacos 3. 启动Seata ...

  3. 介绍这个库:C# Blazor中显示Markdown文件

    1 讲目的 前几天上线了一个在线Icon转换工具,为了让大家使用放心,改了点代码,在转换下载Icon图标后立即删除临时文件,并在工具下面贴上了工具的开发步骤和代码,大家看这样改是否合适,见Issue ...

  4. AMBA总线介绍-02

    AMBA总线介绍 1 HSIZE AHB总线的地址位宽和数据位宽一般都是32bit,一个字节8bit,一个字节占用一个地址空间,但当一个32bit的数据写入一个存储器中或者从一个存储器中读取,32bi ...

  5. PHP安全之道学习笔记6:密码安全

    PHP安全之道:密码安全    最近几年用户数据泄露越发频繁,一些使用PHP技术的大型网站被暴库或者脱库,facebook公司曾因为此类事件股价暴跌.从长远发展来看,用户的数据安全对于网站来说至关重要 ...

  6. java - 运行可执行文件 (.exe)

    package filerun; import java.io.File; import java.io.IOException; public class RunExe { public stati ...

  7. [转帖]SQL Server数据库重建索引、更新统计信息

    https://vip.kingdee.com/article/183932?productLineId=8 SQL Server数据库有时由于长期未做索引重建,导致SQL执行效率下降,当表的索引碎片 ...

  8. [转帖]RocketMQ - nameSrv和Broker

    RocketMQ RocketMQ是一个统一的消息传递引擎,轻量级的数据处理平台. Name Server Name Server充当路由消息的提供者,生产者(Producer)或消费者(Custom ...

  9. [转帖]s3fs把 s3-like 对象存储挂载到本地

    s3fs把 s3-like 对象存储挂载到本地 s3fs把 s3-like 对象存储挂载到本地 s3fs-fuse 是一个采用 c++ 开发的开源应用,它的作用是可以将 AWS S3 以及兼容 S3 ...

  10. 周末拾遗 xsos 的学习与使用

    周末拾遗 xsos 的学习与使用 摘要 周末陪儿子上跆拳道课. 自己一个人傻乎乎的开着笔记本想着学习点东西. 上午看到了一个sosreport的工具. 本来想学习一下. 发现xsos 应该是更好的一个 ...