数据分析项目-大选献金数据分析
目录
需求:
1.加载数据,查看数据的基本信息
2.指定数据截取,将如下字段的数据进行提取,其他数据舍弃
3.对新数据进行总览df.info(),查看是否存在缺失数据
4.用统计学指标快速描述数值型属性的概要。df.describe()
5.空值处理。可能因为忘记填写或者保密等等原因,相关字段出现了空值,将其填充为NOT PROVIDE
6.异常值处理。将捐款金额<=0的数据删除
7.新建一列为各个候选人所在党派party
8.查看party这一列中有哪些不同的元素
9.统计party列中各个元素出现次数
10.查看各个党派收到的政治献金总数contb_receipt_amt
11.查看具体每天各个党派收到的政治献金总数contb_receipt_amt
12.将表中日期格式转换为'yyyy-mm-dd'
13.查看老兵(捐献者职业)DISABLED VETERAN主要支持谁
14.找出各个候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额
需求:
1.加载数据,查看数据的基本信息
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#1.加载数据,查看数据的基本信息
df=pd.read_csv('./data/usa_election.txt',error_bad_lines=False)
print(df.head())
print(df.info())
运行结果
cmte_id cand_id cand_nm ... memo_text form_tp file_num
0 C00410118 P20002978 Bachmann, Michelle ... NaN SA17A 736166
1 C00410118 P20002978 Bachmann, Michelle ... NaN SA17A 736166
2 C00410118 P20002978 Bachmann, Michelle ... NaN SA17A 749073
3 C00410118 P20002978 Bachmann, Michelle ... NaN SA17A 749073
4 C00410118 P20002978 Bachmann, Michelle ... NaN SA17A 736166[5 rows x 16 columns]
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 536041 entries, 0 to 536040
Data columns (total 16 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 cmte_id 536041 non-null object 1 cand_id 536041 non-null object 2 cand_nm 536041 non-null object 3 contbr_nm 536041 non-null object 4 contbr_city 536026 non-null object 5 contbr_st 536040 non-null object 6 contbr_zip 535973 non-null object 7 contbr_employer 525088 non-null object 8 contbr_occupation 530520 non-null object 9 contb_receipt_amt 536041 non-null float6410 contb_receipt_dt 536041 non-null object 11 receipt_desc 8479 non-null object 12 memo_cd 49718 non-null object 13 memo_text 52740 non-null object 14 form_tp 536041 non-null object 15 file_num 536041 non-null int64
dtypes: float64(1), int64(1), object(14)
memory usage: 65.4+ MB
NoneProcess finished with exit code 0
2.指定数据截取,将如下字段的数据进行提取,其他数据舍弃
cand_nm :候选人姓名
contbr_nm : 捐赠人姓名
contbr_st :捐赠人所在州
contbr_employer : 捐赠人所在公司
contbr_occupation : 捐赠人职业
contb_receipt_amt :捐赠数额(美元)
contb_receipt_dt : 捐款的日期
#2.指定数据截取,将如下字段的数据进行提取,其他数据舍弃
df=df[['cand_nm','contbr_nm','contbr_st','contbr_employer','contbr_occupation','contb_receipt_amt','contb_receipt_dt']]
print(df.head())
3.对新数据进行总览df.info(),查看是否存在缺失数据
#3.对新数据进行总览df.info(),查看是否存在缺失数据
print(df.info())
输出结果
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 536041 entries, 0 to 536040
Data columns (total 7 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 cand_nm 536041 non-null object 1 contbr_nm 536041 non-null object 2 contbr_st 536040 non-null object 3 contbr_employer 525088 non-null object 4 contbr_occupation 530520 non-null object 5 contb_receipt_amt 536041 non-null float646 contb_receipt_dt 536041 non-null object
dtypes: float64(1), object(6)
memory usage: 28.6+ MB
NoneProcess finished with exit code 0
4.用统计学指标快速描述数值型属性的概要。df.describe()
#4.用统计学指标快速描述数值型属性的概要。df.describe()
print(df.describe())
输出结果
contb_receipt_amt
count 5.360410e+05
mean 3.750373e+02
std 3.564436e+03
min -3.080000e+04
25% 5.000000e+01
50% 1.000000e+02
75% 2.500000e+02
max 1.944042e+06Process finished with exit code 0
5.空值处理。可能因为忘记填写或者保密等等原因,相关字段出现了空值,将其填充为NOT PROVIDE
#5.空值处理。可能因为忘记填写或者保密等等原因,相关字段出现了空值,将其填充为NOT PROVIDE
# 使用NOT PROVIDE对空值进行填充
df.fillna(value='NOT PROVIDE',inplace=True)
# 重新查看列是否有空值
print(df.info())
输出结果
Data columns (total 7 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 cand_nm 536041 non-null object 1 contbr_nm 536041 non-null object 2 contbr_st 536041 non-null object 3 contbr_employer 536041 non-null object 4 contbr_occupation 536041 non-null object 5 contb_receipt_amt 536041 non-null float646 contb_receipt_dt 536041 non-null object
dtypes: float64(1), object(6)
memory usage: 28.6+ MB
NoneProcess finished with exit code 0
6.异常值处理。将捐款金额<=0的数据删除
#6.异常值处理。将捐款金额<=0的数据删除
df=df.loc[~(df['contb_receipt_amt']<=0)]
print(df.info())
方法2
df['contb_receipt_amt']<=0 #判断
drop_index=df.loc[df['contb_receipt_amt']<=0].index
df.drop(labels=drop_index,axis=0,inplace=True)
print(df.info())
输出结果
# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 cand_nm 530314 non-null object 1 contbr_nm 530314 non-null object 2 contbr_st 530314 non-null object 3 contbr_employer 530314 non-null object 4 contbr_occupation 530314 non-null object 5 contb_receipt_amt 530314 non-null float646 contb_receipt_dt 530314 non-null object
dtypes: float64(1), object(6)
memory usage: 32.4+ MB
NoneProcess finished with exit code 0
7.新建一列为各个候选人所在党派party
# 不同候选人党派对应表
parties = {'Bachmann, Michelle': 'Republican','Romney, Mitt': 'Republican','Obama, Barack': 'Democrat',"Roemer, Charles E. 'Buddy' III": 'Reform','Pawlenty, Timothy': 'Republican','Johnson, Gary Earl': 'Libertarian','Paul, Ron': 'Republican','Santorum, Rick': 'Republican','Cain, Herman': 'Republican','Gingrich, Newt': 'Republican','McCotter, Thaddeus G': 'Republican','Huntsman, Jon': 'Republican','Perry, Rick': 'Republican'}
#查看共有多少个不同的候选人,返回所有值 一个列表
num1=df['cand_nm'].unique()
print(num1)
# 查看候选人的个数,返回所有值的个数 13个人
num2=df['cand_nm'].nunique()
print(num2)
# 利用映射为每个候选人添加党派信息
df['party']=df['cand_nm'].map(parties)
print(df.head())
输出结果
cand_nm contbr_nm ... contb_receipt_dt party
0 Bachmann, Michelle HARVEY, WILLIAM ... 20-JUN-11 Republican
1 Bachmann, Michelle HARVEY, WILLIAM ... 23-JUN-11 Republican
2 Bachmann, Michelle SMITH, LANIER ... 05-JUL-11 Republican
3 Bachmann, Michelle BLEVINS, DARONDA ... 01-AUG-11 Republican
4 Bachmann, Michelle WARDENBURG, HAROLD ... 20-JUN-11 Republican[5 rows x 8 columns]Process finished with exit code 0
8.查看party这一列中有哪些不同的元素
#8.查看party这一列中有哪些不同的元素
print(df['party'].unique())
输出结果
['Republican' 'Democrat' 'Reform' 'Libertarian']
9.统计party列中各个元素出现次数
#9.统计party列中各个元素出现次数
print(df['party'].value_counts())# value_counts()统计Series中不同元素出现的次数
输出结果
Democrat 289999
Republican 234300
Reform 5313
Libertarian 702
Name: party, dtype: int64Process finished with exit code 0
10.查看各个党派收到的政治献金总数contb_receipt_amt
#查看各个党派收到的政治献金总数contb_receipt_amt
df_sum=df.groupby(by='party')['contb_receipt_amt'].sum()
print(df_sum)
输出结果
Democrat 8.259441e+07
Libertarian 4.132769e+05
Reform 3.429658e+05
Republican 1.251181e+08
Name: contb_receipt_amt, dtype: float64Process finished with exit code 0
11.查看具体每天各个党派收到的政治献金总数contb_receipt_amt
#查看具体每天各个党派收到的政治献金总数contb_receipt_amt
df_sum2=df.groupby(by=['contb_receipt_dt','party'])['contb_receipt_amt'].sum()
print(df_sum2)
输出结果
contb_receipt_dt party
01-APR-11 Reform 50.00Republican 12635.00
01-AUG-11 Democrat 182198.00Libertarian 1000.00Reform 1847.00...
31-MAY-11 Republican 313839.80
31-OCT-11 Democrat 216971.87Libertarian 4250.00Reform 3205.00Republican 751542.36
Name: contb_receipt_amt, Length: 1183, dtype: float64Process finished with exit code 0
12.将表中日期格式转换为'yyyy-mm-dd'
#将表中日期格式转换为'yyyy-mm-dd'
months = {"JAN":1, "FEB":2, "MAR":3, "APR":4, "MAY":5, "JUN":6,"JUL":7, "AUG":8, "SEP":9, "OCT":10, "NOV":11, "DEC":12}
def transform_date(d):day,month,year=d.split("-")month = months[month]return '20'+year+'-'+str(month)+'-'+day
df['contb_receipt_dt']=df['contb_receipt_dt'].map(transform_date)
print(df.head())
输出结果
cand_nm contbr_nm ... contb_receipt_dt party
0 Bachmann, Michelle HARVEY, WILLIAM ... 2011-6-20 Republican
1 Bachmann, Michelle HARVEY, WILLIAM ... 2011-6-23 Republican
2 Bachmann, Michelle SMITH, LANIER ... 2011-7-05 Republican
3 Bachmann, Michelle BLEVINS, DARONDA ... 2011-8-01 Republican
4 Bachmann, Michelle WARDENBURG, HAROLD ... 2011-6-20 Republican[5 rows x 8 columns]
Process finished with exit code 0
13.查看老兵(捐献者职业)DISABLED VETERAN主要支持谁
# 1.取出老兵这个职业对应的行数据
old_bing_df = df.loc[df['contbr_occupation'] == 'DISABLED VETERAN']# 2.根据竞选者分组
who1=old_bing_df.groupby(by='cand_nm')['contb_receipt_amt'].sum()
print(who1)
输出结果:给谁捐赠的钱越多 越支持谁
cand_nm
Cain, Herman 300.00
Obama, Barack 4205.00
Paul, Ron 2425.49
Santorum, Rick 250.00
Name: contb_receipt_amt, dtype: float64Process finished with exit code 0
14.找出各个候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额
#找出各个候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额通过query("查询条件来查找捐献人职业")
df['contb_receipt_amt'].max()
df.query('contb_receipt_amt == 1944042.43')
max_amt = df.groupby(by='cand_nm')['contb_receipt_amt'].max()
for i in range(max_amt.size):max_money = max_amt[i]display(df.query('contb_receipt_amt == '+str(max_money)))
2012美国大选献金项目数据分析案例总结:
- 用统计学指标快速描述数值型属性的概要:df.describe()
- 统计Series中不同元素出现的次数:Series_obj.value_counts()
数据分析项目-大选献金数据分析相关推荐
- 3 Python数据分析 美国各州人口分析案例 Pandas高级操作 美国大选献金案例 matplotlib
Python数据分析 1 案例 美国各州人口分析 1.1 数据介绍 数据来源:https://github.com/jakevdp/data-USstates/ 1.1.1 州人口数量表 state- ...
- 2012美国大选献金项目数据分析
文章目录 1.数据载入与预览 1.1 数据加载 1.2 数据合并 1.3 数据预览 1.3.1 查看是否有空值 1.3.2用统计学指标快速描述数值型属性的概要 2.数据的预处理 2.1 数据清洗 2. ...
- 项目3:美国大选献金目数据分析
""" 需求: 1.读取数据 2.查看是否有缺失数据 3.用统计学指标快速描述数值型属性的概要 4.空值处理.可能因为忘记填写保密等原因,相关字段出现了空值,将其填充为N ...
- 【数据分析】使用pandas和numpy分析美国大选献金项目
1. 数据载入与总览 1.1 数据加载 #绘图工具 import matplotlib.pyplot as plt %matplotlib inline #数据处理工具 import numpy as ...
- 数据分析项目3-美国大选献金分析
需求 加载数据 查看数据的基本信息 指定数据截取,将如下字段的数据进行提取,其他数据舍弃 cand_nm: 候选人姓名 contbr_nm:捐赠人所在州 ...
- 数据分析---2012美国大选献金项目数据分析
需求: 1. 加载数据 df = pd.read_csv('./data/usa_election.txt') 2. 对新数据进行总览,查看是否存在缺失数据: 方法一:isnull.notnull.a ...
- 美国2012政治献金数据分析(附有源数据和题目)
读取文件usa_election.txt 查看文件样式及基本信息 指定数据截取,将如下字段的数据进行提取,其他数据舍去: cand_nm :候选人姓名 contbr_nm :捐赠人姓名 contbr_ ...
- 美国大选献金项目学习笔记
目录 要求 代码: 要求 代码: import numpy as np import pandas as pddf = pd.read_csv('./data/usa_election.txt')# ...
- 2012美国大选献金项目(最详细解释)
1. 数据载入和总览 import numpy as npimport pandas as pdfrom pandas import Series,DataFrame 1.1 数据载入 df1 = p ...
- pandas - 案例(美国2012年总统候选人政治献金数据分析)
# 提供数据months = {'JAN' : 1, 'FEB' : 2, 'MAR' : 3, 'APR' : 4, 'MAY' : 5, 'JUN' : 6,'JUL' : 7, 'AUG' : ...
最新文章
- poj 2513(欧拉路径+字典树映射)
- 笔记-信息化与系统集成技术-人工智能的特点
- 【小白学PyTorch】9.tensor数据结构与存储结构
- VTK:可视化算法之IceCream
- vpc 网络隔离_专有网络(VPC)的六大应用场景
- ActiveMQ部署模式
- 干货 | 数据挖掘过关40题
- 你是个有魅力的人吗?人格魅力这样修养而成
- java ftp遍历所有子文件_Java 遍历指定文件夹及子文件夹下的文件
- 多线程编程学习总结(转载)
- 区块链 2.0:下一个计算范式
- java aciss_C语言ACISS表.doc
- amos调节变量怎么画_AMOS结构方程教程,SPSS调节效应分析操作与结果的详细解读...
- HFSS - 同轴馈电矩形微带天线设计与仿真
- Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹
- A - ConneR and the A.R.C. Markland-N
- 人类DNA国标-中英对照表
- ogv格式怎么转换为MP4格式
- 【转】视频《经梧太极第一代传人闫芳老师收徒仪式上推手》是真实的吗?
- 算法开启循环队列武魂