代码记录

#%% 数据处理
# 导入相关处理包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# pd.set_option('display.height', 1000)
# pd.set_option('display.max_rows', 500)
# pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000) #显示在同一行
pd.set_option('display.max_columns', None)   #显示完整的列# 导入候选人信息,添加表头
candinfo = pd.read_csv('weball20.txt', sep='|', names=['CAND_ID','CAND_NAME','CAND_ICI','PTY_CD','CAND_PTY_AFFILIATION','TTL_RECEIPTS','TRANS_FROM_AUTH','TTL_DISB','TRANS_TO_AUTH','COH_BOP','COH_COP','CAND_CONTRIB','CAND_LOANS','OTHER_LOANS','CAND_LOAN_REPAY','OTHER_LOAN_REPAY','DEBTS_OWED_BY','TTL_INDIV_CONTRIB','CAND_OFFICE_ST','CAND_OFFICE_DISTRICT','SPEC_ELECTION','PRIM_ELECTION','RUN_ELECTION','GEN_ELECTION','GEN_ELECTION_PRECENT','OTHER_POL_CMTE_CONTRIB','POL_PTY_CONTRIB','CVG_END_DT','INDIV_REFUNDS','CMTE_REFUNDS'])
candinfo.head()
# 读取候选人和委员会的联系信息
ccl = pd.read_csv("ccl.txt", sep = '|',names=['CAND_ID','CAND_ELECTION_YR','FEC_ELECTION_YR','CMTE_ID','CMTE_TP','CMTE_DSGN','LINKAGE_ID'])
# 关联两个表数据
canddata = pd.merge(ccl, candinfo)
# 提取出所需要的列
canddata = pd.DataFrame(canddata, columns=[ 'CMTE_ID','CAND_ELECTION_YR','CAND_ID', 'CAND_NAME','CAND_PTY_AFFILIATION'])
# CMTE_ID:委员会ID
# 'CAND_ELECTION_YR' 选举年份
# CAND_ID:候选人ID
# CAND_NAME:候选人姓名
# CAND_PTY_AFFILIATION:候选人党派
canddata = canddata[canddata['CAND_ELECTION_YR'] == 2020]#%%
itcont = pd.read_csv('indiv20/itcont.txt', sep = '|',usecols=('CMTE_ID','NAME', 'STATE','EMPLOYER','OCCUPATION','TRANSACTION_AMT', 'TRANSACTION_DT'),names=['CMTE_ID','AMNDT_IND','RPT_TP','TRANSACTION_PGI','IMAGE_NUM','TRANSACTION_TP','ENTITY_TP','NAME','CITY','STATE','ZIP_CODE','EMPLOYER','OCCUPATION','TRANSACTION_DT','TRANSACTION_AMT','OTHER_ID','TRAN_ID','FILE_NUM','MEMO_CD','MEMO_TEXT','SUB_ID'],nrows=1_000_000)
#%%
cand = pd.merge(canddata,itcont,on='CMTE_ID')
cand1 = pd.DataFrame(cand, columns=['CAND_NAME','NAME', 'STATE','EMPLOYER','OCCUPATION','TRANSACTION_AMT', 'TRANSACTION_DT','CAND_PTY_AFFILIATION'])
#%% 备份
cand = cand1
# CAND_NAME – 接受捐赠的候选人姓名
# NAME – 捐赠人姓名
# STATE – 捐赠人所在州
# EMPLOYER – 捐赠人所在公司
# OCCUPATION – 捐赠人职业
# TRANSACTION_AMT – 捐赠数额(美元)
# TRANSACTION_DT – 收到捐款的日期
# CAND_PTY_AFFILIATION – 候选人党派
#%% 数据探索
cand.shape
cand.info()
cand.describe()
#%% 数据清理
cand['STATE'].fillna('NOT PROVIDE',inplace=True)
cand['EMPLOYER'].fillna('NOT PROVIDE',inplace=True)
cand['OCCUPATION'].fillna('NOT PROVIDE',inplace=True)
cand['TRANSACTION_DT'] = cand['TRANSACTION_DT'].astype(str)
cand['TRANSACTION_DT'] = [i[-4:]+i[:-4].zfill(4) for i in cand['TRANSACTION_DT']]
# 数据探索2
cand.info()
cand.head()
cand.describe()
#%% 数据分析
# 查看不同党派受捐额
cand.groupby('CAND_PTY_AFFILIATION').sum().sort_values('TRANSACTION_AMT', ascending=False).head(10)
# 查看不同竞选人的受捐额
cand.groupby('CAND_NAME').sum().sort_values('TRANSACTION_AMT', ascending=False).head(10)
# 查看不同职业的人捐款的总额
cand.groupby('OCCUPATION').sum().sort_values("TRANSACTION_AMT",ascending=False).head(10)
# 查看不同职业人数
cand['OCCUPATION'].value_counts().head(10)
# 每个州捐款的总额
cand.groupby('STATE').sum().sort_values('TRANSACTION_AMT', ascending=False).head(10)
# 每个州捐款人数
cand['STATE'].value_counts().head(10)
# 总参与投票的州数量
STATE_NUM = len(set(cand['STATE']))
# 职业总数量
OCC_NUM = len(set(cand['OCCUPATION']))
#%% 各州总捐款数可视化
st_amt = cand.groupby('STATE').sum().sort_values('TRANSACTION_AMT', ascending=False).head(10)
st_amt.plot(kind='bar')
plt.show()
st_amt1 = cand.groupby('STATE').size().sort_values(ascending=False).head(10)
st_amt1.plot(kind='bar')
plt.show()
#%% 拜登
biden = cand[cand['CAND_NAME'] == 'BIDEN, JOSEPH R JR']
# 按捐赠日期统计
biden_dt = biden.groupby('TRANSACTION_DT').sum().sort_values('TRANSACTION_DT')
#biden_dt['DT_MONTH'] = [i[:6] for i in list(biden_dt.index)]
#biden_dt = biden_dt.groupby('DT_MONTH').sum().sort_values('DT_MONTH')
biden_dt['cumsum'] = biden_dt['TRANSACTION_AMT'].cumsum(axis=0)  # 获捐金额累计
# 按州统计
biden_state = biden.groupby('STATE').sum().sort_values("TRANSACTION_AMT", ascending=False).head(20)
#%% 特朗普
trump = cand[cand['CAND_NAME']=='TRUMP, DONALD J.']
trump_dt = trump.groupby('TRANSACTION_DT').sum().sort_values('TRANSACTION_DT')
#trump_dt['DT_MONTH'] = [i[:6] for i in list(trump_dt.index)]
#trump_dt = trump_dt.groupby('DT_MONTH').sum().sort_values('DT_MONTH')
trump_dt['cumsum'] = trump_dt['TRANSACTION_AMT'].cumsum(axis=0)  # 获捐金额累计
# 按州统计
trump_state = trump.groupby('STATE').sum().sort_values("TRANSACTION_AMT", ascending=False)
#%% 显示累积获捐数
plt.subplot(211)
plt.plot(biden_dt)
plt.subplot(212)
plt.plot(trump_dt)
plt.show()
#%%
biden_state.plot.pie(figsize=(10, 10),autopct='%0.2f%%',subplots=True)
plt.show()

阿里天池——利用pandas分析美国总统竞选选票情况相关推荐

  1. 阿里云AI训练营-数据分析入门:利用Pandas分析美国总统选举

    1.1 前言 本次赛事由开源学习组织Datawhale主办,主要带领学习者利用Python进行数据分析以及数据可视化,包含数据集的处理.数据探索与清晰.数据分析.数据可视化四部分,利用pandas.m ...

  2. 数据分析入门活动赛事,利用Pandas分析美国选民总统喜爱

    本次赛事由开源学习组织Datawhale主办,主要带领学习者利用Python进行数据分析以及数据可视化,包含数据集的处理.数据探索与清晰.数据分析.数据可视化四部分,利用pandas.matplotl ...

  3. 【天池龙珠计划寒假训练营】python学习笔记(四):利用Pandas分析美国选民总统喜好度

    一.数据准备 1.1 数据集来源介绍 1. 所有候选人信息 该文件为每个候选人提供一份记录,并显示候选人的信息.总收入.从授权委员会收到的转账.付款总额.给授权委员会的转账.库存现金总额.贷款和债务以 ...

  4. 阿里天池用Pandas揭秘美国选民的总统喜好附加题

    = =我也不知道有没有杯子,大家权当热闹看看吧. 第一个附加题是按州总捐款热力地图(前面的大家可以直接在天池看,这是个教程类的入门,前面的说实话没啥好看的,新手就好好看看) import seabor ...

  5. pandas实战-2012美国总统竞选赞助分析

    1.数据载入和总览 1.1数据来源 数据来源于阿里云天池公共数据-pandas实践-2012美国总统竞选赞助数据分析,如图所示 然后下载数据并保存到本地,最后读取(本次操作使用工具-jupyter n ...

  6. pandas数据分析案例--2012美国总统竞选赞助数据分析

    美国总统竞选赞助数据分析 本文内容参考阿里云天池实验室,在原有基础上添加了一些结论的分析. 原案例地址 数据来源 1.首先导入相关的python数据分析的库 import pandas as pd i ...

  7. 数据分析案例--2012美国总统竞选赞助数据分析

    美国总统竞选赞助数据分析 本文来自阿里云天池实验室,案例原地址 自学数据分析的小王同学借鉴一下,自己写一遍,分析一遍,自己做的代码和结果如下 1.导入相关的python数据分析的库 import pa ...

  8. 数据分析- 2012美国总统竞选赞助数据分析

    数据分析- 2012美国总统竞选赞助数据分析 导入有关的包 1. 数据载入 1.1 数据读取 1.2 数据合并 1.3 数据基本统计分析 2. 数据清洗 2.1 缺失值处理 2.2 数据转换 2.2. ...

  9. 2012美国总统竞选赞助数据分析项目学习

    项目目的:通过对2012美国总统竞选赞助数据分析,得出哪个总统更具有优势的结论 项目流程:数据载入.数据清洗.数据聚合分组以及可视化 项目地址:https://tianchi.aliyun.com/n ...

最新文章

  1. 解决centos4不能使用yum的方法
  2. python3最新稳定版本-python稳定版本
  3. mysql-事务隔离级别
  4. CSS实现自适应不同大小屏幕的背景大图
  5. 2018年第九届蓝桥杯 - 省赛 - C/C++大学A组 - F.航班时间
  6. spring mvc学习(17)Intellij IDEA创建maven项目无java文件问题
  7. 量子是什么?为什么可以用来给通信加密?
  8. java中servlet知识_jsp_Servlet常用知识总结
  9. sqlserver服务启动后停止,传递给数据库 'master' 中的日志扫描操作的日志扫描号无效...
  10. ethtool 原理介绍和解决网卡丢包排查思路(附ethtool源码下载)
  11. 添加ejs后页面空白解决办法
  12. ado.net mysql 转义_ADO.NET数据库查询
  13. html css动漫素材,66种特效的CSS3动画库animate.css
  14. 《Python+Kivy(App开发)从入门到实践》自学笔记:Python文件+.kv 文件实现“Hello world”
  15. 普通投资者如何进行量化投资
  16. 孤单还是对你最好的惩罚
  17. Introduce Null Object
  18. citus多CN部署
  19. 记录一位软件测试实习生的成长
  20. 【Leetcode】Coin Change

热门文章

  1. python注册用户名和密码登录_Python_36用户名密码登录注册的例子
  2. 人工智能写作产品解决的痛点
  3. 什么是计算机系统性能,什么系统性能好?电脑发烧友告诉你
  4. 七战升鸿蒙需要什么条件,《鸿蒙圣墟》平民提升战力攻略
  5. 用于时间机器备份的文件服务器地址,一日一技 | 如何解决时间机器在 NAS 上创建备份失败的问题?...
  6. 昔日移动GPU王者,从数据中心、汽车等市场全面杀回来——专访Imagination技术创新副总裁Kristof Beets...
  7. S32K144烧写程序记录
  8. 长沙互联网公司和生活成本
  9. 国内CRM竞品分析【纷享销客 VS 销售易 VS 用友】
  10. 大模型时代,视觉推理任务竟然只用语言数据也能学习