1. import pandas as pd
  2. """
  3. 需求
  4. 1.加载数据
  5. 2.查看数据的基本信息
  6. 3.指定数据截取,将如下字段的数据进行提取,其他数据舍弃
  7. cand_nm: 候选人姓名
  8. contbr_nm : 捐赠人姓名
  9. contbr_st:捐赠人所在州
  10. contbr_employer : 捐赠人所在公司
  11. contbr_occupation : 捐赠人职业
  12. contb_receipt_amt : 捐赠数额 (美元
  13. contb_receipt_dt : 捐款的日期对新数据进行总览,查看是否存在缺失数据
  14. 4.用统计学指标快速描述数值型属性的概要空值处理。
  15. 5.可能因为忘记填写或者保密等等原因,相关字段出现了空值,将其填充为NOT PROVIDE异常值处理。
  16. 6.将捐款金额<=0的数据删除
  17. 7.新建一列为各个候选人所在党派party
  18. 8.查看party这一列中有哪些不同的元素
  19. 9.统计party列中各个元素出现次数
  20. 10.查看各个党派收到的政治献金总数contb receipt amt
  21. 11.查看具体每天各个党派收到的政治献金总数contb_receipt_amt
  22. 12.将表中日期格式转换为'yyyy-mm-dd。
  23. 13.查看老兵(捐献者职业)DISABLED VETERAN主要支持谁
  24. """
  25. # 1.加载数据
  26. df = pd.read_csv("./usa_selection.txt")
  27. # 2.查看数据的基本信息
  28. print(df.info())
  29. # 3.指定数据截取,将如下字段的数据进行提取,其他数据舍弃
  30. df = df[["cand_nm", "contbr_nm", "contbr_st",
  31. "contbr_employer", "contbr_occupation", "contb_receipt_amt", "contb_receipt_dt"]]
  32. print(df.head())
  33. # 4.用统计学指标快速描述数值型属性的概要空值处理。
  34. print(df.describe())
  35. # 5.可能因为忘记填写或者保密等等原因,相关字段出现了空值,将其填充为NOT PROVIDE异常值处理。
  36. df.fillna(value="NOT PROVIDE", inplace=True)
  37. print(df.info())
  38. # 6.将捐款金额<=0的数据删除
  39. index_0 = df.loc[df["contb_receipt_amt"] <= 0].index
  40. df.drop(labels=index_0, axis=0, inplace=True)
  41. print(df.info())
  42. # 7.新建一列为各个候选人所在党派party
  43. parties = {
  44. 'Bachmann, Michelle': 'Republican',
  45. 'Romney, Mitt': 'Republican',
  46. 'Obama, Barack': 'Democrat',
  47. "Roemer, Charles E. 'Buddy' III": 'Reform',
  48. 'Pawlenty, Timothy': 'Republican',
  49. 'Johnson, Gary Earl': 'Libertarian',
  50. 'Paul, Ron': 'Republican',
  51. 'Santorum, Rick': 'Republican',
  52. 'Cain, Herman': 'Republican',
  53. 'Gingrich, Newt': 'Republican',
  54. 'McCotter,Thaddeus G': 'Republican',
  55. 'Huntsman, Jon': 'Republican',
  56. 'Perry, Rick': 'Republican'
  57. }
  58. df["partie"] = df["cand_nm"].map(parties)
  59. print(df.head())
  60. # 8.查看party这一列中有哪些不同的元素
  61. print(df['partie'].unique())
  62. # ['Republican' 'Democrat' 'Reform' 'Libertarian' nan]
  63. # 9.统计party列中各个元素出现次数
  64. print(df['partie'].value_counts())
  65. # 10.查看各个党派收到的政治献金总数contb_receipt_amt
  66. print(df.groupby(by="partie")["contb_receipt_amt"].sum())
  67. # 11.查看具体每天各个党派收到的政治献金总数contb_receipt_amt
  68. print(df.groupby(by=["contb_receipt_dt", "partie"])["contb_receipt_amt"].sum())
  69. # 12.将表中日期格式转换为'yyyy-mm-dd。
  70. months = {
  71. "JAN": 1,
  72. "FEB": 2,
  73. "MAR": 3,
  74. "APR": 4,
  75. "MAY": 5,
  76. "JUN": 6,
  77. "JUL": 7,
  78. "AUG": 8,
  79. "SEP": 9,
  80. "OCT": 10,
  81. "NOV": 11,
  82. "DEC": 12
  83. }
  84. def tranformDate(d):
  85. day, month, year = d.split("-")
  86. month = months[month]
  87. return "20{0}-{1}-{2}".format(year, month, day)
  88. df["contb_receipt_dt"] = df["contb_receipt_dt"].map(tranformDate,)
  89. # 13.查看老兵(捐献者职业)DISABLED VETERAN主要支持谁
  90. print(df.head())
  91. old_man = df.loc[df["contbr_occupation"] == "DISABLED VETERAN"]
  92. old_group = old_man.groupby(by="cand_nm")["contb_receipt_amt"].sum()
  93. 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. .NET CORE实战项目之CMS 部署篇 思维导图

    .NET Core实战项目之CMS 第十七章 CMS网站系统的部署 如何优雅的利用Windows服务来部署ASP.NET Core程序

  2. 9 时序数据库M3DB架构与原理

    一.M3DB介绍 M3DB是Uber开源的一款分布式时序数据库,已在Uber内部使用多年.M3DB有以下特性: 分布式的时序数据库,可以水平扩展存储. 支持Pormetheus的查询语言PromQL, ...

  3. 【ThreadX-GUIX】Azure RTOS GUIX和Azure RTOS GUIX Studio概述

    Azure GUIX嵌入式GUI是Microsoft的高级工业级GUI解决方案,专门针对深度嵌入式,实时和IoT应用程序而设计.Microsoft还提供了名为Azure RTOS GUIX Studi ...

  4. 【TouchGFX 】使用 CubeMX 创建 TouchGFX 工程时 LCD 死活不显示

    生成的代码死活无法让LCD显示,经两个晚上的分析验证是LTDC_CLK引脚速度设置为低速导致,经测试中速.高速.超高速都正常,真是冤,聊以此以示纪念

  5. Android——“EditText控件供获取最大长度的方法”

    package utils; import android.app.Activity; import android.content.Context; import android.text.Inpu ...

  6. [转帖]事务上的等待事件 —— enq: TX - contention

    TX锁是保护事务的,事务结束时便会释放.因此,为获得TX锁为等待的会话,要等到拥有锁的会话的事务结束为止. SQL> select name,parameter1,parameter2,para ...

  7. [转帖]为什么不推荐使用/etc/fstab

    https://www.jianshu.com/p/af49a5d0553f 对于工作中使用服务器的公司来讲,每到节假日来临时,总免不了对服务器进行下电.而收假回来的早上,则会有一个早上的时间会花费在 ...

  8. [转帖]Strace + pstack发现耗时点

    https://www.jianshu.com/p/10ea6fff562c 如何使用strace+pstack利器分析程序性能 本文摘抄自如何使用strace+pstack利器分析程序性能 程序说明 ...

  9. [官网]Apache Log4j2 最新版安全提示 2.17.0

    https://logging.apache.org/log4j/2.x/ 最近一个周的时间 log4j2 从 2.14 跃升到了2.17 还在不停的升级 安全问题正是焦头烂额 free softwa ...

  10. rfc7230 Message Syntax and Routing

    rfc7230 目录 rfc7230 2 Architecture 2.6 Protocol Versioning 3 Message Format 3.1 Start Line 3.1.1 Requ ...