task1
task2
task3
task4:数据分析
candidates:候选人信息
cand_id候选人id、cand_name候选人名、cand_py候选人党派
ccl:候选人委员会信息
cand_id候选人id、cand_ele_yr选举年、cmte_id委员会id
itcont:个人捐款信息
cmte_id委员会id name捐款人 city捐款人城市 state捐款人州
employer捐款人雇主 occupation 捐款人职业
1.关联表
a:候选人和候选人委员会:cand_ccl:by 候选人id
结果:候选人信息完善,有了所属委员会信息
ccl = pd.read()
提取ccl列:ccl.pd.DataFrame(ccl, columns=[])
b: a表和捐款人表itcont: c_itcont: by 委员会id cmte_id
结果c:候选人信息+对应委员会+捐款人,一个候选人的行有很多
2.清洗:找空或转换类型
c.shaple:看数据行列
c.info():看数据类型判断空行
发现日期列类型为int:
c[‘date’] = c[‘date’].astype(str)
且换时间格式:通过索引不同位置区分年月日
c_itcont[‘TRANSACTION_DT’] = [i[3:7]+i[0]+i[1:3] for i in c_itcont[‘TRANSACTION_DT’] ]
空值处理:对有空值的列 inplace是对原始表也更改
c[’’].fillna(‘not provided’, inplace=True)
用describe()查看列或整体数据分布 std、top
- 数据分析
a.每个党派获得的总捐款前10:
分组、组内求和sum、排序sort_values()
c.groupby(“CAND_PTY_AFFILIATION”).sum().sort_values()
b.每个候选人获得金额取前10:
c.groupby(“cand_name”).sum().sort_values()
根据党派以及党派最高能发现:t、b是两个货款最高党中获款最多的
c.查看每个职业捐款人数量取前10:
c.groupby(“OCCUPATION”).value_counts().sort_values()
d.每个州捐款总数
c.groupby(“STATE”).sum().sort_values()
e.每个州捐款人数
c.groupby(“STATE”).values_counts().sort_values())
f.哪个州的候选人多
cand.groupby(“STATE”).values_counts()
g.哪个党派的候选人多
cand.groupby(“cand_id”).values_counts()
h.不同党派的支持者在哪个州多
c.groupby(“STATE”).groupby(“PARY_AFF”).values_counts()
州1 人1 x党
州1 人2 y党
州1 人3 x党
州2 人4
州2 人5
i.不同党派的支持者在哪个州占比高,并且显示人数
①给c加一列州内党占比
该党派人数/州候选人
该党派人数:
val_party_people = c.groupby(“PART_AFF”).values_counts()
州候选人:
val_state_people = c.groupby(“STATE”).values_counts()
新增这两列:通过***map映射***:
map映射:必须通过字典
将dataframe两列映射到字典里
dict_country = data.set_index(‘project’).T.to_dict(‘list’)
新增党派人数:
c[‘party’].map()
党a:10人
党b:20人
新增州候选人数:
c[‘STATE’].map(dic)
州1:10人
州2:20人
结果:c.[‘zhanbi’] = x / y
计算:党派占比: val_party / state_party
各州不同党派人数及占比:
4.可视化