pandas实践-2012美国总统竞选赞助数据分析

  1. 数据载入和总览
  2. 数据清洗
    1. 1、缺失值处理
    2. 2、数据转换
  3. 数据聚合与分组运算

数据载入和总览

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#导入文件
data = pd.read_csv("C:\\Users\\董润泽\\Desktop\\P00000001-ALL.csv")
#打印前五行
print(data.head())
#查看数据的信息,包括每个字段的名称、非空数量、字段的数据类型
print(data.info())
#用统计学指标快速描述数据的概要
data.describe()

各个值含义:

cand_nm – 接受捐赠的候选人姓名

contbr_nm – 捐赠人姓名

contbr_st – 捐赠人所在州

contbr_employer – 捐赠人所在公司

contbr_occupation – 捐赠人职业

contb_receipt_amt – 捐赠数额(美元)

contb_receipt_dt – 收到捐款的日期

数据清洗

1、缺失值处理

data['contbr_employer'].fillna('Not Provided')
data['contbr_occupation'].fillna('Not Provided')

2、数据转换

print('共有{}位候选人,分别是:'.format(len(data['cand_nm'].unique())))
data['cand_nm'].unique()

结果:

共有13位候选人,分别是:
array(['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'], dtype=object)

-

#通过搜索引擎等途径,获取到每个总统候选人的所属党派,建立字典parties,候选人名字作为键,所属党派作为对应的值
parties = {'Bachmann, Michelle': 'Republican',
           'Cain, Herman': 'Republican',
           'Gingrich, Newt': 'Republican',
           'Huntsman, Jon': 'Republican',
           'Johnson, Gary Earl': 'Republican',
           'McCotter, Thaddeus G': 'Republican',
           'Obama, Barack': 'Democrat',
           'Paul, Ron': 'Republican',
           'Pawlenty, Timothy': 'Republican',
           'Perry, Rick': 'Republican',
           "Roemer, Charles E. 'Buddy' III": 'Republican',
           'Romney, Mitt': 'Republican',
           'Santorum, Rick': 'Republican'}

#通过map映射函数,增加一列party存储党派信息
data['party'] = data['cand_nm'].map(parties)
#查看两个党派的情况
data['party'].value_counts()

#按照职业汇总对赞助总金额进行排序
#DataFrame.sort_values(by, ascending=True, inplace=False)
#by是根据哪一列进行排序,可以传入多列;ascending=True是升序排序,False为降序;inplace=Ture则是修改原dataframe,默认为False
data.groupby('contbr_occupation')['contb_receipt_amt'].sum().sort_values(ascending=False)[:20]

##3、数据筛选

#查看各候选人获得的赞助总金额
data.groupby('cand_nm')['contb_receipt_amt'].sum().sort_values(ascending=False)

#选取候选人为Obama、Romney的子集数据
data_vs = data[data['cand_nm'].isin(['Obama, Barack','Romney, Mitt'])].copy()

数据聚合与分组运算

##1、透视表(pivot_table)分析党派和职业

#按照党派、职业对赞助金额进行汇总,类似excel中的透视表操作,聚合函数为sum
by_occupation = data.pivot_table('contb_receipt_amt',index='contbr_occupation',columns='party',aggfunc='sum')
#过滤掉赞助金额小于200W的数据
over_2mm = by_occupation[by_occupation.sum(1)>2000000]
over_2mm

-

#由于职业和雇主的处理非常相似,我们定义函数get_top_amounts()对两个字段进行分析处理

def get_top_amounts(group,key,n=5):
#传入groupby分组后的对象,返回按照key字段汇总的排序前n的数据
    totals = group.groupby(key)['contb_receipt_amt'].sum()
    return totals.sort_values(ascending=False)[:n]

grouped = data_vs.groupby('cand_nm')
grouped.apply(get_top_amounts,'contbr_occupation',n=7)

#同样的,使用get_top_amounts()对雇主进行分析处理
grouped.apply(get_top_amounts,'contbr_employer',n=10)

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2470290795@qq.com

文章标题:pandas实践-2012美国总统竞选赞助数据分析

文章字数:810

本文作者:runze

发布时间:2020-02-01, 16:48:03

最后更新:2020-02-21, 15:25:09

原始链接:http://yoursite.com/2020/02/01/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/pandas%E5%AE%9E%E8%B7%B5-2012%E7%BE%8E%E5%9B%BD%E6%80%BB%E7%BB%9F%E7%AB%9E%E9%80%89%E8%B5%9E%E5%8A%A9%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏