目录

需求:

1.加载数据,查看数据的基本信息

2.指定数据截取,将如下字段的数据进行提取,其他数据舍弃

3.对新数据进行总览df.info(),查看是否存在缺失数据

4.用统计学指标快速描述数值型属性的概要。df.describe()

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主要支持谁

14.找出各个候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额

需求:

1.加载数据,查看数据的基本信息

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#1.加载数据,查看数据的基本信息
df=pd.read_csv('./data/usa_election.txt',error_bad_lines=False)
print(df.head())
print(df.info())

运行结果

     cmte_id    cand_id             cand_nm  ... memo_text form_tp file_num
0  C00410118  P20002978  Bachmann, Michelle  ...       NaN   SA17A   736166
1  C00410118  P20002978  Bachmann, Michelle  ...       NaN   SA17A   736166
2  C00410118  P20002978  Bachmann, Michelle  ...       NaN   SA17A   749073
3  C00410118  P20002978  Bachmann, Michelle  ...       NaN   SA17A   749073
4  C00410118  P20002978  Bachmann, Michelle  ...       NaN   SA17A   736166[5 rows x 16 columns]
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 536041 entries, 0 to 536040
Data columns (total 16 columns):#   Column             Non-Null Count   Dtype
---  ------             --------------   -----  0   cmte_id            536041 non-null  object 1   cand_id            536041 non-null  object 2   cand_nm            536041 non-null  object 3   contbr_nm          536041 non-null  object 4   contbr_city        536026 non-null  object 5   contbr_st          536040 non-null  object 6   contbr_zip         535973 non-null  object 7   contbr_employer    525088 non-null  object 8   contbr_occupation  530520 non-null  object 9   contb_receipt_amt  536041 non-null  float6410  contb_receipt_dt   536041 non-null  object 11  receipt_desc       8479 non-null    object 12  memo_cd            49718 non-null   object 13  memo_text          52740 non-null   object 14  form_tp            536041 non-null  object 15  file_num           536041 non-null  int64
dtypes: float64(1), int64(1), object(14)
memory usage: 65.4+ MB
NoneProcess finished with exit code 0

2.指定数据截取,将如下字段的数据进行提取,其他数据舍弃

cand_nm :候选人姓名

contbr_nm : 捐赠人姓名

contbr_st :捐赠人所在州

contbr_employer : 捐赠人所在公司

contbr_occupation : 捐赠人职业

contb_receipt_amt :捐赠数额(美元)

contb_receipt_dt : 捐款的日期

#2.指定数据截取,将如下字段的数据进行提取,其他数据舍弃
df=df[['cand_nm','contbr_nm','contbr_st','contbr_employer','contbr_occupation','contb_receipt_amt','contb_receipt_dt']]
print(df.head())

3.对新数据进行总览df.info(),查看是否存在缺失数据

#3.对新数据进行总览df.info(),查看是否存在缺失数据
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          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
NoneProcess finished with exit code 0

4.用统计学指标快速描述数值型属性的概要。df.describe()

#4.用统计学指标快速描述数值型属性的概要。df.describe()
print(df.describe())

输出结果

       contb_receipt_amt
count       5.360410e+05
mean        3.750373e+02
std         3.564436e+03
min        -3.080000e+04
25%         5.000000e+01
50%         1.000000e+02
75%         2.500000e+02
max         1.944042e+06Process finished with exit code 0

5.空值处理。可能因为忘记填写或者保密等等原因,相关字段出现了空值,将其填充为NOT PROVIDE

#5.空值处理。可能因为忘记填写或者保密等等原因,相关字段出现了空值,将其填充为NOT PROVIDE
# 使用NOT PROVIDE对空值进行填充
df.fillna(value='NOT PROVIDE',inplace=True)
# 重新查看列是否有空值
print(df.info())

输出结果

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
NoneProcess finished with exit code 0

6.异常值处理。将捐款金额<=0的数据删除

#6.异常值处理。将捐款金额<=0的数据删除
df=df.loc[~(df['contb_receipt_amt']<=0)]
print(df.info())

方法2

df['contb_receipt_amt']<=0 #判断
drop_index=df.loc[df['contb_receipt_amt']<=0].index
df.drop(labels=drop_index,axis=0,inplace=True)
print(df.info())

输出结果

 #   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
NoneProcess finished with exit code 0

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'}
#查看共有多少个不同的候选人,返回所有值 一个列表
num1=df['cand_nm'].unique()
print(num1)
# 查看候选人的个数,返回所有值的个数  13个人
num2=df['cand_nm'].nunique()
print(num2)
# 利用映射为每个候选人添加党派信息
df['party']=df['cand_nm'].map(parties)
print(df.head())

输出结果

              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]Process finished with exit code 0

8.查看party这一列中有哪些不同的元素

#8.查看party这一列中有哪些不同的元素
print(df['party'].unique())

输出结果

['Republican' 'Democrat' 'Reform' 'Libertarian']

9.统计party列中各个元素出现次数

#9.统计party列中各个元素出现次数
print(df['party'].value_counts())# value_counts()统计Series中不同元素出现的次数

输出结果

Democrat       289999
Republican     234300
Reform           5313
Libertarian       702
Name: party, dtype: int64Process finished with exit code 0

10.查看各个党派收到的政治献金总数contb_receipt_amt

#查看各个党派收到的政治献金总数contb_receipt_amt
df_sum=df.groupby(by='party')['contb_receipt_amt'].sum()
print(df_sum)

输出结果

Democrat       8.259441e+07
Libertarian    4.132769e+05
Reform         3.429658e+05
Republican     1.251181e+08
Name: contb_receipt_amt, dtype: float64Process finished with exit code 0

11.查看具体每天各个党派收到的政治献金总数contb_receipt_amt

#查看具体每天各个党派收到的政治献金总数contb_receipt_amt
df_sum2=df.groupby(by=['contb_receipt_dt','party'])['contb_receipt_amt'].sum()
print(df_sum2)

输出结果

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: float64Process finished with exit code 0

12.将表中日期格式转换为'yyyy-mm-dd'

#将表中日期格式转换为'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)+'-'+day
df['contb_receipt_dt']=df['contb_receipt_dt'].map(transform_date)
print(df.head())

输出结果

              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]
Process finished with exit code 0

13.查看老兵(捐献者职业)DISABLED VETERAN主要支持谁

# 1.取出老兵这个职业对应的行数据
old_bing_df = df.loc[df['contbr_occupation'] == 'DISABLED VETERAN']# 2.根据竞选者分组
who1=old_bing_df.groupby(by='cand_nm')['contb_receipt_amt'].sum()
print(who1)

输出结果:给谁捐赠的钱越多 越支持谁

cand_nm
Cain, Herman       300.00
Obama, Barack     4205.00
Paul, Ron         2425.49
Santorum, Rick     250.00
Name: contb_receipt_amt, dtype: float64Process finished with exit code 0

14.找出各个候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额

#找出各个候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额通过query("查询条件来查找捐献人职业")
df['contb_receipt_amt'].max()
df.query('contb_receipt_amt == 1944042.43')
max_amt = df.groupby(by='cand_nm')['contb_receipt_amt'].max()
for i in range(max_amt.size):max_money = max_amt[i]display(df.query('contb_receipt_amt == '+str(max_money)))

2012美国大选献金项目数据分析案例总结:

  1. 用统计学指标快速描述数值型属性的概要:df.describe()
  2. 统计Series中不同元素出现的次数:Series_obj.value_counts()

数据分析项目-大选献金数据分析相关推荐

  1. 3 Python数据分析 美国各州人口分析案例 Pandas高级操作 美国大选献金案例 matplotlib

    Python数据分析 1 案例 美国各州人口分析 1.1 数据介绍 数据来源:https://github.com/jakevdp/data-USstates/ 1.1.1 州人口数量表 state- ...

  2. 2012美国大选献金项目数据分析

    文章目录 1.数据载入与预览 1.1 数据加载 1.2 数据合并 1.3 数据预览 1.3.1 查看是否有空值 1.3.2用统计学指标快速描述数值型属性的概要 2.数据的预处理 2.1 数据清洗 2. ...

  3. 项目3:美国大选献金目数据分析

    """ 需求: 1.读取数据 2.查看是否有缺失数据 3.用统计学指标快速描述数值型属性的概要 4.空值处理.可能因为忘记填写保密等原因,相关字段出现了空值,将其填充为N ...

  4. 【数据分析】使用pandas和numpy分析美国大选献金项目

    1. 数据载入与总览 1.1 数据加载 #绘图工具 import matplotlib.pyplot as plt %matplotlib inline #数据处理工具 import numpy as ...

  5. 数据分析项目3-美国大选献金分析

    需求     加载数据     查看数据的基本信息     指定数据截取,将如下字段的数据进行提取,其他数据舍弃      cand_nm: 候选人姓名      contbr_nm:捐赠人所在州   ...

  6. 数据分析---2012美国大选献金项目数据分析

    需求: 1. 加载数据 df = pd.read_csv('./data/usa_election.txt') 2. 对新数据进行总览,查看是否存在缺失数据: 方法一:isnull.notnull.a ...

  7. 美国2012政治献金数据分析(附有源数据和题目)

    读取文件usa_election.txt 查看文件样式及基本信息 指定数据截取,将如下字段的数据进行提取,其他数据舍去: cand_nm :候选人姓名 contbr_nm :捐赠人姓名 contbr_ ...

  8. 美国大选献金项目学习笔记

    目录 要求 代码: 要求 代码: import numpy as np import pandas as pddf = pd.read_csv('./data/usa_election.txt')# ...

  9. 2012美国大选献金项目(最详细解释)

    1. 数据载入和总览 import numpy as npimport pandas as pdfrom pandas import Series,DataFrame 1.1 数据载入 df1 = p ...

  10. pandas - 案例(美国2012年总统候选人政治献金数据分析)

    # 提供数据months = {'JAN' : 1, 'FEB' : 2, 'MAR' : 3, 'APR' : 4, 'MAY' : 5, 'JUN' : 6,'JUL' : 7, 'AUG' : ...

最新文章

  1. poj 2513(欧拉路径+字典树映射)
  2. 笔记-信息化与系统集成技术-人工智能的特点
  3. 【小白学PyTorch】9.tensor数据结构与存储结构
  4. VTK:可视化算法之IceCream
  5. vpc 网络隔离_专有网络(VPC)的六大应用场景
  6. ActiveMQ部署模式
  7. 干货 | 数据挖掘过关40题
  8. 你是个有魅力的人吗?人格魅力这样修养而成
  9. java ftp遍历所有子文件_Java 遍历指定文件夹及子文件夹下的文件
  10. 多线程编程学习总结(转载)
  11. 区块链 2.0:下一个计算范式
  12. java aciss_C语言ACISS表.doc
  13. amos调节变量怎么画_AMOS结构方程教程,SPSS调节效应分析操作与结果的详细解读...
  14. HFSS - 同轴馈电矩形微带天线设计与仿真
  15. Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹
  16. A - ConneR and the A.R.C. Markland-N
  17. 人类DNA国标-中英对照表
  18. ogv格式怎么转换为MP4格式
  19. 【转】视频《经梧太极第一代传人闫芳老师收徒仪式上推手》是真实的吗?
  20. 算法开启循环队列武魂

热门文章

  1. 物联网安全架构与基础设施
  2. 「Python条件结构」嵌套if:根据星期英文字母输出相应的星期
  3. 云杰恒指:7.29恒指期货实盘指导交易复盘
  4. windows服务器漏洞修复,三种修复Windows远程桌面服务漏洞(CVE-2019-0708)的方法
  5. 51nod 1272 最大距离 By Assassin
  6. Unity 动态编辑Terrain地形(五)贴图
  7. 笔记本电脑亮度调节键失灵了,该怎么解决?
  8. C语言#error的使用
  9. MSF给正常程序添加后门
  10. 新卡插手机显示无服务器,手机插卡无服务怎么回事