天池python学习打卡task1~task4

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

  1. 数据分析
    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.可视化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值