3、数据探索与清洗
进过数据处理部分,我们获得了可用的数据集,现在我们可以利用调用shape
属性查看数据的规模,调用info
函数查看数据信息,调用describe
函数查看数据分布。
# 查看数据规模 多少行 多少列
c_itcont.shape
(756205, 8)
# 查看整体数据信息,包括每个字段的名称、非空数量、字段的数据类型
c_itcont.info()
<class ‘pandas.core.frame.DataFrame’>
Int64Index: 756205 entries, 0 to 756204
Data columns (total 8 columns):
CAND_NAME 756205 non-null object
NAME 756205 non-null object
STATE 756160 non-null object
EMPLOYER 737413 non-null object
OCCUPATION 741294 non-null object
TRANSACTION_AMT 756205 non-null int64
TRANSACTION_DT 756205 non-null int64
CAND_PTY_AFFILIATION 756205 non-null object
dtypes: int64(2), object(6)
memory usage: 51.9+ MB
通过上面的探索我们知道目前数据集的一些基本情况,目前数据总共有756205行,8列,总占用内存51.9+MB,STATE
、EMPLOYER
、OCCUPATION
有缺失值,另外日期列目前为int64类型,需要进行转换为str类型。
#空值处理,统一填充 NOT PROVIDED
c_itcont[‘STATE’].fillna(‘NOT PROVIDED’,inplace=True)
c_itcont[‘EMPLOYER’].fillna(‘NOT PROVIDED’,inplace=True)
c_itcont[‘OCCUPATION’].fillna(‘NOT PROVIDED’,inplace=True)
# 对日期TRANSACTION_DT列进行处理
c_itcont[‘TRANSACTION_DT’] = c_itcont[‘TRANSACTION_DT’] .astype(str)
# 将日期格式改为年月日 7242020
c_itcont[‘TRANSACTION_DT’] = [i[3:7]+i[0]+i[1:3] for i in c_itcont[‘TRANSACTION_DT’] ]
# 再次查看数据信息
c_itcont.info()
<class ‘pandas.core.frame.DataFrame’>
Int64Index: 756205 entries, 0 to 756204
Data columns (total 8 columns):
CAND_NAME 756205 non-null object
NAME 756205 non-null object
STATE 756205 non-null object
EMPLOYER 756205 non-null object
OCCUPATION 756205 non-null object
TRANSACTION_AMT 756205 non-null int64
TRANSACTION_DT 756205 non-null object
CAND_PTY_AFFILIATION 756205 non-null object
dtypes: int64(1), object(7)
memory usage: 51.9+ MB
# 查看数据前3行
c_itcont.head(3)
|
| CAND_NAME | NAME | STATE | EMPLOYER | OCCUPATION | TRANSACTION_AMT | TRANSACTION_DT | CAND_PTY_AFFILIATION |
| — | — | — | — | — | — | — | — | — |
| 0 | MORGAN, JOSEPH DAVID | MARTIN, WILLIAM II | AZ | RETIRED | RETIRED | 100 | 2020724 | REP |
| 1 | MORGAN, JOSEPH DAVID | RODRIGUEZ, GERARDO | AZ | VA HOSPITAL | LAB TECH | 40 | 2020724 | REP |
| 2 | MORGAN, JOSEPH DAVID | RODRIGUEZ, GERARDO | AZ | VA HOSPITAL | LAB TECH | 40 | 2020731 | REP |
# 查看数据表中数据类型的列的数据分布情况
c_itcont.describe()
|
| TRANSACTION_AMT |
| — | — |
| count | 7.562050e+05 |
| mean | 1.504307e+02 |
| std | 2.320452e+03 |
| min | -5.600000e+03 |
| 25% | 2.000000e+01 |
| 50% | 3.500000e+01 |
| 75% | 1.000000e+02 |
| max | 1.500000e+06 |
# 查看单列的数据发布情况
c_itcont[‘CAND_NAME’].describe()
count 756205
unique 312
top BIDEN, JOSEPH R JR
freq 507816
Name: CAND_NAME, dtype: object
4、数据分析
# 计算每个党派的所获得的捐款总额,然后排序,取前十位
c_itcont.groupby(“CAND_PTY_AFFILIATION”).sum().sort_values(“TRANSACTION_AMT”,ascending=False).head(10)
|
| TRANSACTION_AMT |
| — | — |
| CAND_PTY_AFFILIATION |
|
| — | — |
| DEM | 75961730 |
| REP | 37170653 |
| IND | 328802 |
| LIB | 169202 |
| DFL | 76825 |
| GRE | 18607 |
| NON | 11256 |
| UNK | 10195 |
| CON | 4117 |
| BDY | 3250 |
# 计算每个总统候选人所获得的捐款总额,然后排序,取前十位
c_itcont.groupby(“CAND_NAME”).sum().sort_values(“TRANSACTION_AMT”,ascending=False).head(10)
|
| TRANSACTION_AMT |
| — | — |
| CAND_NAME |
|
| — | — |
| BIDEN, JOSEPH R JR | 68111142 |
| TRUMP, DONALD J. | 16594982 |
| SULLIVAN, DAN | 9912465 |
| JACOBS, CHRISTOPHER L. | 6939209 |
| BLOOMBERG, MICHAEL R. | 3451916 |
| MARKEY, EDWARD J. SEN. | 606832 |
| SHAHEEN, JEANNE | 505446 |
| KENNEDY, JOSEPH P III | 467738 |
| CORNYN, JOHN SEN | 345959 |
| FIGLESTHALER, WILLIAM MATTHEW MD | 258221 |
获得捐赠最多的党派有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)
|
| TRANSACTION_AMT |
| — | — |
| OCCUPATION |
|
| — | — |
| NOT EMPLOYED | 24436214 |
| RETIRED | 18669950 |
| NOT PROVIDED | 5089355 |
| ATTORNEY | 4443569 |
| FOUNDER | 3519109 |
| PHYSICIAN | 3295595 |
| CONSULTANT | 1647033 |
| LAWYER | 1565976 |
| PROFESSOR | 1481260 |
| EXECUTIVE | 1467865 |
# 查看每个职业捐款人的数量
c_itcont[‘OCCUPATION’].value_counts().head(10)
NOT EMPLOYED 224109
RETIRED 151834
ATTORNEY 19666
NOT PROVIDED 14912
PHYSICIAN 14033
CONSULTANT 8333
PROFESSOR 8022
TEACHER 8013
ENGINEER 7922
SALES 6435
Name: OCCUPATION, dtype: int64
从捐款人的职业这个角度分析,我们会发现NOT EMPLOYED(自由职业)
的总捐赠额是最多,通过查看每个职业捐赠的人数来看,我们就会发现是因为NOT EMPLOYED(自由职业)
人数多的原因,另外退休人员捐款人数也特别多,所以捐款总数对应的也多,其他比如像:律师、创始人、医生、顾问、教授、主管这些高薪人才虽然捐款总人数少,但是捐款总金额也占据了很大比例。
# 每个州获捐款的总额,然后排序,取前五位
c_itcont.groupby(‘STATE’).sum().sort_values(“TRANSACTION_AMT”,ascending=False).head(5)
|
| TRANSACTION_AMT |
| — | — |
| STATE |
|
| — | — |
| CA | 19999115 |
| NY | 11468537 |
| FL | 8128789 |
| TX | 8101871 |
| MA | 5187957 |
# 查看每个州捐款人的数量
c_itcont[‘STATE’].value_counts().head(5)
CA 127895
TX 54457
FL 54343
NY 49453
MA 29314
Name: STATE, dtype: int64
最后查看每个州的捐款总金额,我们会发现CA(加利福利亚)
、NY(纽约)
、FL(弗罗里达)
这几个州的捐款是最多的,在捐款人数上也是在Top端,另一方面也凸显出这些州的经济水平发达。大家也可以通过数据查看下上面列举的高端职业在各州的分布情况,进行进一步的分析探索。
4、数据可视化
首先导入相关Python库
# 导入matplotlib中的pyplot
import matplotlib.pyplot as plt
# 为了使matplotlib图形能够内联显示
%matplotlib inline
# 导入词云库
from wordcloud import WordCloud,ImageColorGenerator
4.1 按州总捐款数和总捐款人数柱状图
# 各州总捐款数可视化
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’)
AxesSubplot:xlabel=‘STATE’
4.2 各州捐款总人数可视化
# 各州捐款总人数可视化,取前10个州的数据
st_amt = c_itcont.groupby(‘STATE’).size().sort_values(ascending=False).head(10)
st_amt.plot(kind=‘bar’)
AxesSubplot:xlabel=‘STATE’
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)
array([<AxesSubplot:ylabel='TRANSACTION_AMT'>], dtype=object)
4.3 总捐最多的候选人捐赠者词云图
通过数据分析中获得捐赠总额前三的候选人统计中可以看出拜登在2020.7.22-2020.8.20这期间获得捐赠的总额是最多的,所以我们以拜登为原模型,制作词云图。
文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-jPMYvOQV-1711094114213)]