"""
需求:
1.读取数据
2.查看是否有缺失数据
3.用统计学指标快速描述数值型属性的概要
4.空值处理。可能因为忘记填写保密等原因,相关字段出现了空值,将其填充为NOT PROVIDE
df.fillna(value = 'NOT PROVIDE',inplace=True)
5.异常值的处理。将捐赠金额<=0的数据删除
df.drop(labels=drop_indexs,axis=0,inplace=True)
axis=0是行,唯一一个特殊的
6.新建一列为各个候选人所在党派的party
7.查看party这一列中有哪些不同的元素
8.统计party列中各个元素出现的次数
9.查看各个党派收到的政治献金总数
10.查看具体每天各个党派收到的政治现金总数
11.将表中的时期格式转变为"yyyy-mm-dd"
12.查看老兵(捐赠者职业)主要支持谁
"""
#1.读取数据
import pandas as pd
import numpy as np
df=pd.read_csv(r"D:\拜师课程\数据分析项目-合集-自由式学习\数据分析项目\项目3:美国大选现金项目数据分析\usa_election.txt")
#2.查看是否有缺失数据
df.info()
#3.用统计学指标快速描述数值型属性的概要
df.describe()
"""
contb_receipt_amt file_num
count 5.360410e+05 536041.000000
mean 3.750373e+02 761472.107800
std 3.564436e+03 5148.893508
min -3.080000e+04 723511.000000
25% 5.000000e+01 756218.000000
50% 1.000000e+02 763233.000000
75% 2.500000e+02 763621.000000
max 1.944042e+06 767394.000000
"""
#4.空值处理。可能因为忘记填写保密等原因,相关字段出现了空值,将其填充为NOT PROVIDE
df.fillna(value = 'NOT PROVIDE',inplace=True)
#5.异常值的处理。将捐赠金额<=0的数据删除
drop_indexs=df.loc[df['contb_receipt_amt']<=0].index
df.drop(labels=drop_indexs,axis=0,inplace=True)
#6.新建一列为各个候选人所在党派的party
#根据名字去百度查询,各个候选人所在的党派,写成一个字典
"""
字典形式为:
partise={
"人名,人名":"所在的党派",
"人名,人名":"所在的党派",
"人名,人名":"所在的党派",
}
df['party']=df['cand_nm'].map(parties)
"""
#7.查看party这一列中有哪些不同的元素
"""
df['patry'].unique()
"""
#8.统计party列中各个元素出现的次数
df['party'].value_counts()
#9.查看各个党派收到的政治献金总数
df.groupby(by='party')["contb_receipt_amt"].sum()
#10.查看具体每天各个党派收到的政治现金总数(多条件分组)
df.groupby(by=['contb_receipt_dt','party'])['contb_receipt_amt'].sum()
#11.将表中的时期格式转变为"yyyy-mm-dd"
"""
def trandformDate(d):
day,month,year = d.spiit('-')
month = months[month]
return '20' + year + '-' +str(month) + '_' + day
df['contb_receipt_dt']=df['contb_receipt_dt'].map(trandformDate(trandformDate))
"""
#12.查看老兵(捐赠者职业)主要支持谁:给谁捐赠的钱越多越支持谁
#可以先将原数据中的老兵这个职业对于的行数据取出
df['contbr_occupation']=='DISABLED VETERAN'
df_old=df.loc[df['contbr_occupation']=='DISABLED VETERAN']
#对候选人分组,然后对捐赠金额求和
df_old.groupby(by="cand_nm")['contb_receipt_amt'].sum()
"""
cand_nm
Cain, Herman 300.00
Obama, Barack 4205.00
Paul, Ron 2425.49
Santorum, Rick 250.00
Name: contb_receipt_amt, dtype: float64
"""