天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战

学习目标:

从0完成一个数据分析实战(1天)

学习内容:

python 天池龙珠计划-Python训练营学习第10-11天Task 04
数据分析实战

学习地点:

天池龙珠计划-Python训练营

学习产出:

用Pandas揭秘美国选民…

1.2 数据集来源介绍

所有候选人信息
该文件为每个候选人提供一份记录,并显示候选人的信息、总收入、从授权委员会收到的转账、付款总额、给授权委员会的转账、库存现金总额、贷款和债务以及其他财务汇总信息。
数据字段描述详细:https://www.fec.gov/campaign-finance-data/all-candidates-file-description/
关键字段说明

CAND_ID 候选人ID
CAND_NAME 候选人姓名
CAND_PTY_AFFILIATION 候选人党派

数据来源:https://www.fec.gov/files/bulk-downloads/2020/weball20.zip

候选人委员会链接信息
该文件显示候选人的身份证号码、候选人的选举年份、联邦选举委员会选举年份、委员会识别号、委员会类型、委员会名称和链接标识号。
信息描述详细:https://www.fec.gov/campaign-finance-data/candidate-committee-linkage-file-description/
关键字段说明

CAND_ID 候选人ID
CAND_ELECTION_YR 候选人选举年份
CMTE_ID 委员会ID

数据来源:https://www.fec.gov/files/bulk-downloads/2020/ccl20.zip

个人捐款档案信息 【注意】由于文件较大,本数据集只包含2020.7.22-2020.8.20的相关数据,如果需要更全数据可以通过数据来源中的地址下载。
该文件包含有关收到捐款的委员会、披露捐款的报告、提供捐款的个人、捐款日期、金额和有关捐款的其他信息。
信息描述详细:https://www.fec.gov/campaign-finance-data/contributions-individuals-file-description/
关键字段说明

CMTE_ID 委员会ID
NAME 捐款人姓名
CITY 捐款人所在市
State 捐款人所在州
EMPLOYER 捐款人雇主/公司
OCCUPATION 捐款人职业

数据来源:https://www.fec.gov/files/bulk-downloads/2020/indiv20.zip

1.数据处理

进行数据处理前,我们需要知道我们最终想要的数据是什么样的,因为我们是想分析候选人与捐赠人之间的关系,所以我们想要一张数据表中有捐赠人与候选人一一对应的关系,所以需要将目前的三张数据表进行一一关联,汇总到需要的数据。

# 读取个人捐赠数据,由于原始数据没有表头,需要添加表头
candidates = 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'])
# 读取候选人和委员会的联系信息
ccl = pd.read_csv("ccl.txt", sep = '|',names=['CAND_ID','CAND_ELECTION_YR','FEC_ELECTION_YR','CMTE_ID','CMTE_TP','CMTE_DSGN','LINKAGE_ID'])
# 关联两个表数据
ccl = pd.merge(ccl,candidates)
# 提取出所需要的列
ccl = pd.DataFrame(ccl, columns=[ 'CMTE_ID','CAND_ID', 'CAND_NAME','CAND_PTY_AFFILIATION'])

查看ccl的前10行
CMTE_ID:委员会ID
CAND_ID:候选人ID
CAND_NAME:候选人姓名
CAND_PTY_AFFILIATION:候选人党派

ccl.head(10)

运行结果:
天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第1张图片

*读取个人捐赠数据,由于原始数据没有表头,需要添加表头*
itcont = pd.read_csv('itcont_2020_20200722_20200820.txt', sep='|',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'])

数据说明

CAND_NAME – 接受捐赠的候选人姓名
NAME – 捐赠人姓名
STATE – 捐赠人所在州
EMPLOYER – 捐赠人所在公司
OCCUPATION – 捐赠人职业
TRANSACTION_AMT – 捐赠数额(美元)
TRANSACTION_DT – 收到捐款的日期
CAND_PTY_AFFILIATION – 候选人党派

# 查看目前数据前10行
c_itcont.head(10)

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第2张图片

3、数据探索与清洗

进过数据处理部分,我们获得了可用的数据集,现在我们可以利用调用shape属性查看数据的规模,调用info函数查看数据信息,调用describe函数查看数据分布。

# 查看数据规模 多少行 多少列
c_itcont.shape

在这里插入图片描述

# 查看整体数据信息,包括每个字段的名称、非空数量、字段的数据类型
c_itcont.info()

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第3张图片

# 查看数据前3行
c_itcont.head(3)

运行结果:
在这里插入图片描述

# 查看数据表中数据类型的列的数据分布情况
c_itcont.describe()

运行结果:
天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第4张图片
—————————————————————

# 查看单列的数据发布情况
c_itcont['CAND_NAME'].describe()

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第5张图片

4.数据分析

# 计算每个党派的所获得的捐款总额,然后排序,取前十位
c_itcont.groupby("CAND_PTY_AFFILIATION").sum().sort_values("TRANSACTION_AMT",ascending=False).head(10)

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第6张图片获得捐赠最多的党派有DEM(民主党)、REP(共和党),分别对应BIDEN, JOSEPH R JR(拜登)和TRUMP, DONALD J.(特朗普),从我们目前分析的2020.7.22-2020.8.20这一个月的数据来看,在选民的捐赠数据中拜登代表的民主党完胜特朗普代表的共和党,由于完整数据量过大,所以没有对所有数据进行汇总分析,因此也不能确定11月大选公布结果就一定是拜登当选

# 查看不同职业的人捐款的总额,然后排序,取前十位
c_itcont.groupby('OCCUPATION').sum().sort_values("TRANSACTION_AMT",ascending=False).head(10)

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第7张图片


# 查看每个职业捐款人的数量
c_itcont['OCCUPATION'].value_counts().head(10)

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第8张图片
从捐款人的职业这个角度分析,我们会发现NOT EMPLOYED(自由职业)的总捐赠额是最多,通过查看每个职业捐赠的人数来看,我们就会发现是因为NOT EMPLOYED(自由职业)人数多的原因,另外退休人员捐款人数也特别多,所以捐款总数对应的也多,其他比如像:律师、创始人、医生、顾问、教授、主管这些高薪人才虽然捐款总人数少,但是捐款总金额也占据了很大比例。

# 每个州获捐款的总额,然后排序,取前五位
c_itcont.groupby('STATE').sum().sort_values("TRANSACTION_AMT",ascending=False).head(5)

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第9张图片

# 查看每个州捐款人的数量
c_itcont['STATE'].value_counts().head(5)

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第10张图片
最后查看每个州的捐款总金额,我们会发现CA(加利福利亚)、NY(纽约)、FL(弗罗里达)这几个州的捐款是最多的,在捐款人数上也是在Top端,另一方面也凸显出这些州的经济水平发达

4.数据可视化

# 导入matplotlib中的pyplot
import matplotlib.pyplot as plt
# 为了使matplotlib图形能够内联显示
%matplotlib inline
# 导入词云库
from wordcloud import WordCloud,ImageColorGenerator
# 各州总捐款数可视化
st_amt=c_itcont.groupby('STATE').sum().sort_values("TRANSACTION_AMT",ascending=False)[:10]
st_amt=pd.DataFrame(st_amt, columns=['TRANSACTION_AMT'])
st_amt.plot(kind='bar')

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第11张图片

# 各州捐款总人数可视化,取前10个州的数据
st_amt=c_itcont.groupby('STATE').size().sort_values(ascending=False).head(10)
st_amt.plot(kind='bar')

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第12张图片
4.3 热门候选人拜登在各州的获得的捐赠占比

# 从所有数据中取出支持拜登的数据
biden = c_itcont[c_itcont['CAND_NAME']=='BIDEN, JOSEPH R JR']
# 统计各州对拜登的捐款总数
biden_state = biden.groupby('STATE').sum().sort_values("TRANSACTION_AMT", ascending=False).head(10)
# 饼图可视化各州捐款数据占比
biden_state.plot.pie(figsize=(10, 10),autopct='%0.2f%%',subplots=True)

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第13张图片

# 从所有数据中取出支持川普的数据
telianpu = c_itcont[c_itcont['CAND_NAME']=='TRUMP, DONALD J.']
# 统计每个州对川普的捐款数
telianpu_state = telianpu.groupby('STATE').sum().sort_values("TRANSACTION_AMT", ascending = False).head(10)
#可视化每个州捐款数据
telianpu_state.plot.pie(figsize = (10, 10), autopct = '%0.2f%%',subplots = True)

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第14张图片

# 按州总捐款热力地图
import seaborn as sns
st_amt2 = c_itcont.groupby('STATE').sum().sort_values("TRANSACTION_AMT",ascending=False)[:10]
st_amt2 = pd.DataFrame(st_amt, columns=['TRANSACTION_AMT'])
sns.heatmap(st_amt2, cmap='Blues', annot=True, fmt='.0f')

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第15张图片
代码
天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第16张图片

天池龙珠计划-Python训练营学习第10-11天Task 04 数据分析实战_第17张图片

你可能感兴趣的:(python,python,数据分析)