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

该博客主要介绍了如何使用Python对数据集进行预处理,包括读取CSV文件、查看数据概况、处理缺失值(用NOTPROVIDE填充)、删除异常值(捐赠金额小于等于0的记录)、创建党派新列并映射、统计各党派献金总额、分析每日献金情况、日期格式转换以及分析特定群体(如老兵)的捐款偏好。通过这些步骤,展示了数据清洗和初步分析的过程。
摘要由CSDN通过智能技术生成

需求:

1. 加载数据

df = pd.read_csv('./data/usa_election.txt')

2. 对新数据进行总览,查看是否存在缺失数据:

方法一:isnull、notnull、any、all

方法二:df.info()

df.info()

3. 用统计学指标快速描述数值型属性的概要:

df.describe()  #统计学指标:数值型属性

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

df.fillna(value='NOT PROVIDE',inplace=True)   #空值填充为NOT PROVIDE
df.info()   #检查数据表中是否含有空值

5.异常值处理:将捐赠金额小于等于0的数据删除

df['contb_receipt_amt'] <= 0   #得到布尔值(小于0的为True),以此为行索引
df.loc[df['contb_receipt_amt'] <= 0]   #得到所有含有异常值的行数据
drop_indexs = df.loc[df['contb_receipt_amt'] <= 0].index   #得到含有异常值的行数据的行索引
df.drop(labels=drop_indexs,axis=0,inplace=True)   #删除这些行

6. 新建一列,这一列为 候选人所在的党派party

        (1)先从网上查询:找到这些候选人各自的党派,然后封装成一个字典

         (2)然后利用映射,将党派关系表映射到源数据表中。

df['cand_nm'].map(parties)  #给候选者的名字映射党派
df['party'] = df['cand_nm'].map(parties)   #将映射后的党派加到原表party这一列

7. 查看party这一列中有哪些不同的元素——去重

                .unique()    去重,看Series中有几个不同的元素

df['party'].unique()

8. 统计party中不同元素出现的次数

        .value_counts()   计算Series中每一种元素出现的次数

df['party'].value_counts()

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

        需要根据党派分组,然后求各自政治献金的总数

df.groupby(by='party')['contb_receipt_amt'].sum()

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

        分组:日期、党派     

df.groupby(by={'party','contb_receipt_dt'])['contb_receipt_amt'].sum()

 11. 将表中日期格式转化位:’yyyy-mm-dd‘

        (1) 为了方便操作,先定义一个字典

         (2) map()的运算方法:

def transformDate(s):
    day,month,year = s.split('-')
    # month是英文缩写,需要转化成数字,用提前准备好的字典 months
    month = months[month]
    return '20'+year+'-'+str(month)+'-'+day


df['contb_receipt_amt'] = df['contb_receipt_dt'].map(transformDate)   #对日期列进行transformDate转换

         (3)转化完成。

12. 查看老兵(捐献者职业)DISABLED VETERAN支持谁?  职业中的某一类,给谁捐钱多就支持谁。

df['contbr_occupation']=='DISABLED VETERAN'    #返回的是布尔值,True为老兵
df.loc[df['contbr_occupation']=='DISABLED VETERAN']   #老兵所在行数据
#分组:根据候选人分组,再对捐赠金额求和
df.loc[df['contbr_occupation']=='DISABLED VETERAN'].groupby(by='cand_nm')  #老兵候选人分类
df[df['contbr_occupation']==DISABLED VETERAN].groupby(by='cand_nm')['contb_receipt_amt'].sum()    #老兵给每种党派捐赠献金的总数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值