数据准备

参考:https://wwa.lanzoul.com/io4Lo00kvkob

字段含义:

  • cand_nm :候选人姓名
  • contbr_nm : 捐赠人姓名
  • contbr_st :捐赠人所在州
  • contbr_employer : 捐赠人所在公司
  • contbr_occupation : 捐赠人职业
  • contb_receipt_amt :捐赠数额(美元)
  • contb_receipt_dt : 捐款的日期
import pandas as pd# 加载数据,查看数据的基本信息
df = pd.read_csv('./usa_election.txt', on_bad_lines='skip')# 截取指定列,其他数据舍弃
df = df[['cand_nm', 'contbr_nm', 'contbr_st', 'contbr_employer', 'contbr_occupation', 'contb_receipt_amt','contb_receipt_dt']]
print(df.head())
print(df.info())
              cand_nm           contbr_nm  ... contb_receipt_amt contb_receipt_dt
0  Bachmann, Michelle     HARVEY, WILLIAM  ...             250.0        20-JUN-11
1  Bachmann, Michelle     HARVEY, WILLIAM  ...              50.0        23-JUN-11
2  Bachmann, Michelle       SMITH, LANIER  ...             250.0        05-JUL-11
3  Bachmann, Michelle    BLEVINS, DARONDA  ...             250.0        01-AUG-11
4  Bachmann, Michelle  WARDENBURG, HAROLD  ...             300.0        20-JUN-11
[5 rows x 7 columns]
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 536041 entries, 0 to 536040
Data columns (total 7 columns):#   Column             Non-Null Count   Dtype
---  ------             --------------   -----  0   cand_nm            536041 non-null  object 1   contbr_nm          536041 non-null  object 2   contbr_st          536040 non-null  object 3   contbr_employer    525088 non-null  object 4   contbr_occupation  530520 non-null  object 5   contb_receipt_amt  536041 non-null  float646   contb_receipt_dt   536041 non-null  object
dtypes: float64(1), object(6)
memory usage: 28.6+ MB
None

空值处理

# 使用 NOT PROVIDE 对空值进行填充
df.fillna(value='NOT PROVIDE', inplace=True)# 重新查看列是否有空值
print(df.info())# 异常值处理。将捐款金额<=0的数据删除
df = df.loc[~(df['contb_receipt_amt'] <= 0)]# 等效于
# df.drop(labels=df.loc[df['contb_receipt_amt'] <= 0].index, axis=0, inplace=True)
print(df.info())

输出:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 536041 entries, 0 to 536040
Data columns (total 7 columns):#   Column             Non-Null Count   Dtype
---  ------             --------------   -----  0   cand_nm            536041 non-null  object 1   contbr_nm          536041 non-null  object 2   contbr_st          536041 non-null  object 3   contbr_employer    536041 non-null  object 4   contbr_occupation  536041 non-null  object 5   contb_receipt_amt  536041 non-null  float646   contb_receipt_dt   536041 non-null  object
dtypes: float64(1), object(6)
memory usage: 28.6+ MB
None
<class 'pandas.core.frame.DataFrame'>
Int64Index: 530314 entries, 0 to 536040
Data columns (total 7 columns):#   Column             Non-Null Count   Dtype
---  ------             --------------   -----  0   cand_nm            530314 non-null  object 1   contbr_nm          530314 non-null  object 2   contbr_st          530314 non-null  object 3   contbr_employer    530314 non-null  object 4   contbr_occupation  530314 non-null  object 5   contb_receipt_amt  530314 non-null  float646   contb_receipt_dt   530314 non-null  object
dtypes: float64(1), object(6)
memory usage: 32.4+ MB
None

数据分析

# 不同候选人党派对应表
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'
}# 查看共有多少个不同的候选人,返回所有值
num1 = df['cand_nm'].unique()
print(num1)
print("*" * 100)# 查看候选人的个数,返回所有值的个数
num2 = df['cand_nm'].nunique()
print(num2)
print("*" * 100)# 利用映射为每个候选人添加党派信息
df['party'] = df['cand_nm'].map(parties)
print(df.head())
print("*" * 100)# 查看party这一列中有哪些不同的元素
print(df['party'].unique())
print("*" * 100)# 统计party列中各个元素出现次数
print(df['party'].value_counts())
print("*" * 100)# 查看各个党派收到的政治献金总数contb_receipt_amt
df_sum = df.groupby(by='party')['contb_receipt_amt'].sum()
print(df_sum)
print("*" * 100)# 查看具体每天各个党派收到的政治献金总数contb_receipt_amt
df_sum2 = df.groupby(by=['contb_receipt_dt', 'party'])['contb_receipt_amt'].sum()
print(df_sum2)
print("*" * 100)# 将表中日期格式转换为'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 transform_date(d):day, month, year = d.split("-")month = months[month]return '20' + year + '-' + str(month) + '-' + daydf['contb_receipt_dt'] = df['contb_receipt_dt'].map(transform_date)
print(df.head())
print("*" * 100)# 查看老兵(捐献者职业)DISABLED VETERAN主要支持谁
disabled_veteran_df = df.loc[df['contbr_occupation'] == 'DISABLED VETERAN']
disabled_veteran_support = disabled_veteran_df.groupby(by='cand_nm')['contb_receipt_amt'].sum()
print(disabled_veteran_support)
print("*" * 100)

输出:

['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']
****************************************************************************************************
13
****************************************************************************************************cand_nm           contbr_nm  ... contb_receipt_dt       party
0  Bachmann, Michelle     HARVEY, WILLIAM  ...        20-JUN-11  Republican
1  Bachmann, Michelle     HARVEY, WILLIAM  ...        23-JUN-11  Republican
2  Bachmann, Michelle       SMITH, LANIER  ...        05-JUL-11  Republican
3  Bachmann, Michelle    BLEVINS, DARONDA  ...        01-AUG-11  Republican
4  Bachmann, Michelle  WARDENBURG, HAROLD  ...        20-JUN-11  Republican[5 rows x 8 columns]
****************************************************************************************************
['Republican' 'Democrat' 'Reform' 'Libertarian']
****************************************************************************************************
Democrat       289999
Republican     234300
Reform           5313
Libertarian       702
Name: party, dtype: int64
****************************************************************************************************
party
Democrat       8.259441e+07
Libertarian    4.132769e+05
Reform         3.429658e+05
Republican     1.251181e+08
Name: contb_receipt_amt, dtype: float64
****************************************************************************************************
contb_receipt_dt  party
01-APR-11         Reform             50.00Republican      12635.00
01-AUG-11         Democrat       182198.00Libertarian      1000.00Reform           1847.00...
31-MAY-11         Republican     313839.80
31-OCT-11         Democrat       216971.87Libertarian      4250.00Reform           3205.00Republican     751542.36
Name: contb_receipt_amt, Length: 1183, dtype: float64
****************************************************************************************************cand_nm           contbr_nm  ... contb_receipt_dt       party
0  Bachmann, Michelle     HARVEY, WILLIAM  ...        2011-6-20  Republican
1  Bachmann, Michelle     HARVEY, WILLIAM  ...        2011-6-23  Republican
2  Bachmann, Michelle       SMITH, LANIER  ...        2011-7-05  Republican
3  Bachmann, Michelle    BLEVINS, DARONDA  ...        2011-8-01  Republican
4  Bachmann, Michelle  WARDENBURG, HAROLD  ...        2011-6-20  Republican[5 rows x 8 columns]
****************************************************************************************************
cand_nm
Cain, Herman       300.00
Obama, Barack     4205.00
Paul, Ron         2425.49
Santorum, Rick     250.00
Name: contb_receipt_amt, dtype: float64
****************************************************************************************************

机器学习-数据科学库 13 政治献金数据案例相关推荐

  1. 机器学习-数据科学库-day5

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 机器学习-数据科学库-day5 pandas学习 pandas之DataFrame pandas常用统计方法 将字符串离散化 数据合并 ...

  2. 机器学习-数据科学库-day1

    机器学习-数据科学库-day1 机器学习-数据科学库-day1 matplotlib 机器学习-数据科学库-day1 数据分析课程包括: 基础概念与环境 matplotlib numpy pandas ...

  3. 机器学习-数据科学库:Pandas总结(1)

    机器学习-数据科学库:Pandas总结(1) Pandas pandas的常用数据类型 pandas之Series创建 pandas之Series切片和索引 pandas之读取外部数据 pandas之 ...

  4. HuaPu在学:机器学习——数据科学库【matplotlib】

    数据科学库[matplotlib] 文章目录 数据科学库[matplotlib] 前言 一.数据分析介绍及环境安装 1.为什么要数据分析??? 2.环境安装 二.matplotlib 1.为什么学习m ...

  5. 机器学习-数据科学库-day6

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 机器学习-数据科学库-day6 pandas学习 动手练习 pandas中的时间序列 生成一段时间范围 关于频率的更多缩写 在Data ...

  6. 机器学习-数据科学库:matplotlib绘图

    机器学习-数据科学库:matplotlib绘图 matplotlib绘图 matplotlib折线图 matplotlib散点图 matplotlib条形图 matplotlib直方图 对比常用统计图 ...

  7. Neoj图数据科学库(The Neo4j graph data science library)使用指南

    目录 介绍 算法 图目录 版本 安装 支持的Neo4j版本 Neo4j Desktop Neo4j Server Enterprise 版本配置 Neo4j Docker Neo4j Causal C ...

  8. python中令人惊艳的小众数据科学库

    Python是门很神奇的语言,历经时间和实践检验,受到开发者和数据科学家一致好评,目前已经是全世界发展最好的编程语言之一.简单易用,完整而庞大的第三方库生态圈,使得Python成为编程小白和高级工程师 ...

  9. python数据科学库_Python数据科学库

    python数据科学库 什么是数据科学? (What is Data Science?) We live in an information age, where the challenge is t ...

  10. Neo4J入门笔记[2]---Neo4J GDS 图数据科学库

    Neo4J 提供了GDS的库,里面包括了很多算法.GDS的英语全称是Graph Data Science(图数据科学库),其句法流程如下: stream Returns the result of t ...

最新文章

  1. java在己有的类创子类怎么创_如何使用Java创建自己的异常子类
  2. 安卓SurfaceFlinger框架初探
  3. linux内核版本 2.6.39,linux – 为什么这个内核模块在2.6.39上被标记为永久
  4. 获取对象的属性,并且判断对象属性是否存在
  5. 算法复杂度分析(下)
  6. JDBC数据库编程:callableStatement接口
  7. 推荐免费的Windows Mobile截屏软件
  8. 如何断开所有SQL Server所有的连接
  9. 查看计算机显卡驱动版本,电脑怎么更新显卡驱动?如何查看驱动是否正常
  10. 米聊PC版体验评测: 简约过头的即时聊天工具
  11. 最长公共子串(动态规划)
  12. 售前的价值在哪里?这个问题不简单
  13. 空间数据挖掘与空间大数据的探索与思考(五)
  14. js怎么识别图片中的文字,js图片文字识别代码
  15. Android Ibeacon 算法,iBeacon定位算法
  16. html聊天室ui,震惊!这个H5居然是在线聊天室!(内附完整教程)
  17. Features and Characteristics
  18. 【万里征程——Windows App开发】开发准备
  19. 【Jodd】Jodd工具
  20. 在超图中导入revit模型

热门文章

  1. Java学习路线-1:编程入门
  2. python forward函数_Python——函数
  3. 没有PPT,一文带你了解元宇宙
  4. DX11:先定一个小目标,比如:把DX11龙书上的知识点系统的总结下来
  5. 计算机仿真撤稿,LOL云顶之弈11.5天神裁决天使阵容攻略 新版本裁决天使运营思路...
  6. 手提电脑亮度不能调节,亮度调节按钮变灰,找不到调节亮度按钮
  7. Java初学笔记30-【MiniQQ聊天部分代码】
  8. Markdown博客系统的搭建与使用
  9. 多线程并发编程知识点汇总
  10. threejs学习第一天--3D地月环绕实战案例