python分析奥巴马资金来源

奥巴马的竞选资金是一点点从选民那里募集来的。如获党内提名,可得政府拔款,但也没多少。美国大选不仅禁外国人捐款,而且禁止公司机构捐款,而只允许个人捐款。不仅如此,还为个人捐款限制了上限,防止富人捐过多的款而影响未来的公平执政。
不仅富人自己不能多捐,如果某个老板呼吁自己的员工给某人捐钱或投票支持他,都是犯法的。因此,想要筹到几千万竞争资金,唯一的办法是争取更多选民支持,一点点募集。所以,中国、公司、大笔捐款,这三条都是犯法的。
我记得以前已经有华人闹过这种丑闻了。美国的选举法就是要严防少数人企图用几个臭钱影响美国的政治。所以我们作为外国人就更别去自讨没趣了。

导入包

In [1]:
import numpy as npimport pandas as pdfrom pandas import Series,DataFrame

方便大家操作,将月份和参选人以及所在政党进行定义

In [2]:
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}of_interest = ['Obama, Barack', 'Romney, Mitt', 'Santorum, Rick', 'Paul, Ron', 'Gingrich, Newt']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' }

读取文件

In [3]:
table = pd.read_csv('data/usa_election.txt')table.head()

C:\jupyter\lib\site-packages\IPython\core\interactiveshell.py:2785: DtypeWarning: Columns (6) have mixed types. Specify dtype option on import or set low_memory=False. interactivity=interactivity, compiler=compiler, result=result)
Out[3]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 20-JUN-11 NaN NaN NaN SA17A 736166
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 23-JUN-11 NaN NaN NaN SA17A 736166
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 05-JUL-11 NaN NaN NaN SA17A 749073
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 01-AUG-11 NaN NaN NaN SA17A 749073
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 20-JUN-11 NaN NaN NaN SA17A 736166
In [8]:
#使用map函数 字典,新建一列各个候选人所在党派partytable['party'] = table['cand_nm'].map(parties)table.head()
Out[8]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 20-JUN-11 NaN NaN NaN SA17A 736166 Republican
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 23-JUN-11 NaN NaN NaN SA17A 736166 Republican
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 05-JUL-11 NaN NaN NaN SA17A 749073 Republican
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 01-AUG-11 NaN NaN NaN SA17A 749073 Republican
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 20-JUN-11 NaN NaN NaN SA17A 736166 Republican
In [10]:
#party这一列中有哪些元素table['party'].unique()
Out[10]:
array(['Republican', 'Democrat', 'Reform', 'Libertarian'], dtype=object)
In [ ]:
#使用value_counts()函数,统计party列中各个元素出现次数,value_counts()是Series中的,无参,返回一个带有每个元素出现次数的Series
In [11]:
table['party'].value_counts()
Out[11]:
Democrat 292400Republican 237575Reform 5364Libertarian 702Name: party, dtype: int64
In [12]:
#使用groupby()函数,查看各个党派收到的政治献金总数contb_receipt_amttable.groupby(by='party')['contb_receipt_amt'].sum()
Out[12]:
partyDemocrat 8.105758e 07Libertarian 4.132769e 05Reform 3.390338e 05Republican 1.192255e 08Name: contb_receipt_amt, dtype: float64
In [13]:
#查看具体每天各个党派收到的政治献金总数contb_receipt_amt 。使用groupby([多个分组参数])table.groupby(by=['party','contb_receipt_dt'])['contb_receipt_amt'].sum()
Out[13]:
party contb_receipt_dtDemocrat 01-AUG-11 175281.00 01-DEC-11 651532.82 01-JAN-12 58098.80 01-JUL-11 165961.00 01-JUN-11 145459.00 01-MAY-11 82644.00 01-NOV-11 122529.87 01-OCT-11 148977.00 01-SEP-11 403297.62 02-AUG-11 164510.11 02-DEC-11 216056.96 02-JAN-12 89743.60 02-JUL-11 17105.00 02-JUN-11 422453.00 02-MAY-11 396675.00 02-NOV-11 147183.81 02-OCT-11 62605.62 02-SEP-11 137948.41 03-AUG-11 147053.02 03-DEC-11 81304.02 03-JAN-12 87406.97 03-JUL-11 5982.00 03-JUN-11 320176.20 03-MAY-11 261819.11 03-NOV-11 119304.56 03-OCT-11 363061.02 03-SEP-11 45598.00 04-APR-11 640235.12 04-AUG-11 598784.23 04-DEC-11 72795.10 ... Republican 29-AUG-11 941769.23 29-DEC-11 428501.42 29-JAN-11 750.00 29-JAN-12 75220.02 29-JUL-11 233423.35 29-JUN-11 1340704.29 29-MAR-11 38875.00 29-MAY-11 8363.20 29-NOV-11 407322.64 29-OCT-11 81924.01 29-SEP-11 1612794.52 30-APR-11 43004.80 30-AUG-11 915548.58 30-DEC-11 492470.45 30-JAN-12 255204.80 30-JUL-11 12249.04 30-JUN-11 2744932.63 30-MAR-11 50240.00 30-MAY-11 17803.60 30-NOV-11 809014.83 30-OCT-11 43913.16 30-SEP-11 4886331.76 31-AUG-11 1017735.02 31-DEC-11 1094376.72 31-JAN-11 6000.00 31-JAN-12 869890.41 31-JUL-11 12781.02 31-MAR-11 62475.00 31-MAY-11 301339.80 31-OCT-11 734601.83Name: contb_receipt_amt, Length: 1183, dtype: float64
In [14]:
def trasform_date(d): day,month,year = d.split('-') month = months[month] return "20" year '-' str(month) '-' day
In [17]:
#将表中日期格式转换为'yyyy-mm-dd'。日期格式,通过函数加map方式进行转换table['contb_receipt_dt'] = table['contb_receipt_dt'].apply(trasform_date)
In [18]:
table.head()
Out[18]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 2011-6-20 NaN NaN NaN SA17A 736166 Republican
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 2011-6-23 NaN NaN NaN SA17A 736166 Republican
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 2011-7-05 NaN NaN NaN SA17A 749073 Republican
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 2011-8-01 NaN NaN NaN SA17A 749073 Republican
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 2011-6-20 NaN NaN NaN SA17A 736166 Republican
In [19]:
#查看老兵(捐献者职业)DISABLED VETERAN主要支持谁 :查看老兵们捐赠给谁的钱最多table['contbr_occupation'] == 'DISABLED VETERAN'
Out[19]:
0 False1 False2 False3 False4 False5 False6 False7 False8 False9 False10 False11 False12 False13 False14 False15 False16 False17 False18 False19 False20 False21 False22 False23 False24 False25 False26 False27 False28 False29 False ... 536011 False536012 False536013 False536014 False536015 False536016 False536017 False536018 False536019 False536020 False536021 False536022 False536023 False536024 False536025 False536026 False536027 False536028 False536029 False536030 False536031 False536032 False536033 False536034 False536035 False536036 False536037 False536038 False536039 False536040 FalseName: contbr_occupation, Length: 536041, dtype: bool
In [21]:
old_bing_df = table.loc[table['contbr_occupation'] == 'DISABLED VETERAN']
In [22]:
old_bing_df.groupby(by='cand_nm')['contb_receipt_amt'].sum()
Out[22]:
cand_nmCain, Herman 300.00Obama, Barack 4205.00Paul, Ron 2425.49Santorum, Rick 250.00Name: contb_receipt_amt, dtype: float64
In [23]:
table['contb_receipt_amt'].max()
Out[23]:
1944042.43
In [24]:
#找出候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额 .通过query("查询条件来查找捐献人职业")table.query('contb_receipt_amt == 1944042.43')
Out[24]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
176127 C00431445 P80003338 Obama, Barack OBAMA VICTORY FUND 2012 - UNITEMIZED CHICAGO IL 60680 NaN NaN 1944042.43 2011-12-31 NaN X * SA18 763233 Democrat
来源:https://www.icode9.com/content-1-497751.html

一、数据导入
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

file_=pd.read_csv('2012_Federal_Election_Commission_Database.csv')
file_.info()
cand_nm – 接受捐赠的候选人姓名
contbr_nm – 捐赠人姓名
contbr_st – 捐赠人所在州
contbr_employer – 捐赠人所在公司
contbr_occupation – 捐赠人职业
contb_receipt_amt – 捐赠数额(美元)
contb_receipt_dt – 收到捐款的日期
二、数据清洗
1.处理缺失值
从数据预览中发现contbr_employer,contb_receipt_amt这两列有缺失值,暂且先将缺失值设置为‘unknow’

data1=file_.fillna('unknow')
2.添加政党背景
总统选举与政党有很大的关联,表中并没有政党背景的字段,可以利用字典的映射来添加(map函数),这里我采用两表联合(merge)的方式来添加字段:

#先查询有几个候选人
data1['cand_nm'].unique()
#建立每个候选人对应党派的字典
parties = {'Bachmann, Michelle': 'Republican',
'Cain, Herman': 'Republican',
'Gingrich, Newt': 'Republican',
'Huntsman, Jon': 'Republican',
'Johnson, Gary Earl': 'Republican',
'McCotter, Thaddeus G': 'Republican',
'Obama, Barack': 'Democrat',
'Paul, Ron': 'Republican',
'Pawlenty, Timothy': 'Republican',
'Perry, Rick': 'Republican',
"Roemer, Charles E. 'Buddy' III": 'Republican',
'Romney, Mitt': 'Republican',
'Santorum, Rick': 'Republican'}
#将字典转化为DataFrame用于联合
par=pd.DataFrame(parties,index=[0])
part=par.T
part.columns=['parties']
#将党派和候选人进行联合
data2=pd.merge(data1,part,left_on='cand_nm',right_index=True,how='left')
3.去除异常值
为了简化计算,这里将过滤掉捐赠金额为复数的记录,采用布尔值进行过滤

data=data2[data2['contb_receipt_amt']>0]
三、分析统计
1.从捐赠人的职业维度进行分析
先查看有多少个不同职业:

occupation=data['contbr_occupation'].value_counts()
从表中可以发现存在着重复现象,比如CEO和C.E.O.等,因此这里需要先进行去重统一的清洗操作,还是利用字典来修改名称。建立一个职业对应字典,把相同职业的不同表达映射为对应的职业,比如把C.E.O.映射为CEO

occupation_map = {
'INFORMATION REQUESTED PER BEST EFFORTS':'unknow',
'INFORMATION REQUESTED':'unknow',
'SELF' : 'SELF-EMPLOYED',
'SELF EMPLOYED' : 'SELF-EMPLOYED',
'C.E.O.':'CEO',
'LAWYER':'ATTORNEY',}
定义一个隐匿函数,用map来遍历

#如果没有映射,则返回x
f = lambda x: occupation_map.get(x, x)
data.loc[:,['contbr_occupation']]=data.contbr_occupation.map(f)
occupation=data['contbr_occupation'].value_counts()
len(occupation) #45062
可以看出明显发生了变化,occupation的长度为45062,说明大约有45062个不同的职业。

同样的,对雇主信息也进行相应的清洗:

emp_mapping = {
'INFORMATION REQUESTED PER BEST EFFORTS' : 'NOT PROVIDED',
'INFORMATION REQUESTED' : 'NOT PROVIDED',
'SELF' : 'SELF-EMPLOYED',
'SELF EMPLOYED' : 'SELF-EMPLOYED',}
# 如果不在字典中,返回x
f = lambda x: emp_mapping.get(x, x)
data.loc[:,['contbr_employer']]= data.contbr_employer.map(f)
1.1 透视分析
按职业和党派进行交叉分析,查看不同职业对民主党和共和党的捐赠金额总数

group_occ=data.groupby(['parties','contbr_occupation'])['contb_receipt_amt'].sum()
group_occ=group_occ.unstack(0)
group_occ=group_occ[group_occ.sum(1)>2000000]
unstack-拆堆,将第0层级的分层索引拆散,放在列标签上。因为职业数量较多,帅选出总额大于2000000的数据

#绘制柱状图
group_occ.plot.barh(figsize=(20,16))
1.2 Obama vs Rommey
作为夺冠热门,接下里聚焦于 Obama 和 Rommey,先选出Obama和Rommey的数据

data_select=data[data['cand_nm'].isin(['Obama, Barack','Romney, Mitt'])]
按职业进行分组,并绘制柱状图进行分析

group_nm=data_select.groupby(['cand_nm','contbr_occupation'])['contb_receipt_amt'].sum()
group_nm=group_nm[group_nm>2000000]
group_nm=group_nm.unstack(0)
group_nm.plot.barh()
从图中可以看出,律师、家庭主妇和退休人员捐赠金额较多,在精英行业中奥巴马一直处于优势地位
按雇主进行分组,并绘制柱状图进行分析

2. 从捐赠金和捐赠数的维度分箱统计
#建立一个分箱阈值
bins=np.array([0,1,10,100,1000,10000,100000,1000000,10000000])
cuts=pd.cut(data_select['contb_receipt_amt'],bins)
2.1 每个区间的捐赠人数
size用于对分组后的数据进行计数,类似于count,由于分组后会出现缺失值,所以将缺失值先设置为0

group_people=data_select.groupby(['cand_nm',cuts]).size()
group_people=group_people.unstack(0)
group_people=group_people.fillna(0)
接着绘制饼状图,可以突出每个区间人数的贡献值,但是由于$10000以上的捐赠人数较少,从饼状图中几乎观察不到,所以这里将$10000的贡献者过滤。同时在饼状图的基础绘制出人数的密度分布图,将其放在一个figure中:

左图是Obama的分析结果,右图是Romney的分析结果
2.2 每个区间的捐赠总额
group_sum=data_select.groupby(['cand_nm',cuts])['contb_receipt_amt'].sum()
group_sum=group_sum.unstack(0)
group_sum=group_sum.fillna(0)
各个区间捐赠额相差较大,这里做归一化处理,用百分比来表示每个区间的贡献值。div操作是将每一列的值除以总和。stacked=True可以将两列的值进行堆叠,绘制堆积柱状图

#先对每一行求和,然后用每一个值去除得到相应的百分比
per_sum=group_sum.div(group_sum.sum(axis=1),axis=0)
per_sum.plot.bar(stacked=True,figsize=(18,16))
3. 从地区维度进行统计
3.1 查看捐赠总人数排名前十的地区
top_ten_people=data.groupby('contbr_st')['contb_receipt_amt'].size().sort_values(ascending=False).head(10)
top_ten_people.plot.bar(figsize=(10,8),title='The number of donors in each state')
3.2 查看捐赠总金额排名前十的地区
top_ten_sum=data.groupby('contbr_st')['contb_receipt_amt'].sum().sort_values(ascending=False).head(10)
top_ten_sum.plot.bar(figsize=(10,8),title='The amount donated by each state')
3.3 对比各州对Obama 和 Rommey的贡献
这里先定义一个函数,用于显示分组后前几名的数据。apply是分组-遍历-聚合的经典用法,它可以对分组的每一组数据进行遍历,而不是对全部数据

#定义一个排序函数
def top(df,columns,n):
return df.groupby(columns)['contb_receipt_amt'].sum().sort_values(ascending=False)[0:n]
data_select.groupby('cand_nm').apply(top,columns='contbr_st',n=5)
接着绘制柱状图,这里筛选出捐赠总额大于10000000的地区,并绘制出百分比堆积图进行对比分析:

fig1=plt.figure(figsize=(20,16))
ax1_1=fig1.add_subplot(1,2,1)
ax1_2=fig1.add_subplot(1,2,2)
group_st=data_select.groupby(['cand_nm','contbr_st'])['contb_receipt_amt'].sum()
group_st=group_st.unstack(0)
group_st=group_st[group_st.sum(1)>10000000]
group_st.plot.bar(figsize=(10,8),ax=ax1_1)
group_st_percent=group_st.div(group_st.sum(1),axis=0)
group_st_percent.plot.bar(stacked=True,figsize=(10,8),ax=ax1_2)
fig1.subplots_adjust(left=0,right=1,wspace=0.2,hspace=0.2)
4. 从时间序列维度进行统计
由于原始数据中的contb_receiptdt并非python可以自动识别的日期格式,所以先用Pandas的to_datetime函数转化格式。

data['times']=pd.to_datetime(data['contb_receipt_dt'])
4.1 查看每个候选人的时间序列
group_date=data.groupby(['cand_nm','times'])['contb_receipt_amt'].sum()
group_date=group_date.unstack(0)
group_date=group_date.sort_values(by='times')
group_date=group_date.cumsum(axis=0)
group_date.plot(figsize=(12,8),linestyle='solid')
4.2 重采样
数据重采样就是将数据原有的频率转换到另一个频率上,如果是从低频率转换到高频率,那么就是升采样,比如原来的数据是按月统计的,通过升采样可以转换为按日的序列数据;相反,如果原来的数据是按日的时间序列数据,通过转换函数转换为按月的时间序列数据,那么我们就将这个过程称为降采样。不管是升采样还是降采样,都通过pandas中的resample函数完成:

#先将数据转化为日期格式
data_select['times']=pd.to_datetime(data_select['contb_receipt_dt'])
#这里不打算覆盖原始数据,所以选择copy
data_select_re=data_select.copy()
#将日期这一列设置为索引,用set_index方法,inplace=True表示覆盖原数据
data_select_re.set_index('times',inplace=True)
#降采样
group_date_re=data_select_re.groupby('cand_nm').resample('M',label='left')['contb_receipt_amt'].sum()
group_date_re=group_date_re.unstack(0)
可以看到重采样后的结果是按月进行汇总,接下来绘制折线图和面积图,观察捐赠金额的时间序列:

fig2=plt.figure(figsize=(20,16))
ax2_1=fig2.add_subplot(2,1,1)
ax2_2=fig2.add_subplot(2,1,2)
group_date_re.plot(marker='o',figsize=(15,10),ax=ax2_1)
group_date_re.plot.area(figsize=(15,10),ax=ax2_2)
四、 总结
在数据清洗方面难度不大,但其实还可以进一步改进,用map函数更加方便
apply函数在拆分-应用-联合方面的运用不是很熟练,对分组后每一组数据进行排序时需要自 定义个一个排序函数去遍历每一组
重采样时时间序列研究中重要的一部分,resample函数的用法如下:DataFrame.resample(rule,how=None,axis=0,fill_method=None,closed=None,label=None,convention='start',kind=None,loffset=None,limit=None,base=0,on=None,level=None)
resample的各个参数
4. 可视化部分主要使用Pandas来完成,用seaborn模块可能会更加美观一些

5. 在分组聚合时经常会使用到unstack函数,往往会和reset_index()混淆:

unstack是将分层索引返回在列标签上,而reset_index()是将分层索引返回在列数据中。

stack是将列标签透视在行标签上,生成新的分层索引,而set_index()是将一列值作为新的索引,这时也有可能会产生分层索引

6. 透视分析时除了采用groupby,pivot_table也是一个不错的选择:

DataFrame.pivot_table(values,index,columns,margins...) 返回的时一个分组后的聚合数据,类似于groupby

1.数据加载
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data1=pd.read_csv('data_01.csv')
data2=pd.read_csv('data_02.csv')
data3=pd.read_csv('data_03.csv')
#数据合并
data=pd.concat([data1,data2,data3])

#数据预览和基本统计分析

#查看数据的信息,包括每个字段的名称、非空数量、字段的数据类型
print(data.info())
#经过观察发现employer,occupation有缺失值

# cand_nm – 接受捐赠的候选人姓名
# contbr_nm – 捐赠人姓名
# contbr_st – 捐赠人所在州
# contbr_employer – 捐赠人所在公司
# contbr_occupation – 捐赠人职业
# contb_receipt_amt – 捐赠数额(美元)
# contb_receipt_dt – 收到捐款的日期

# print(data.head())
#用统计学指标快速描述数据的概要
print(data.describe())
登录后复制

2.数据清洗
2.1缺失值处理
#从data.info()得知,contbr_employer、contbr_occupation均有少量缺失值,均填充为NOT PROVIDED
data['contbr_employer'].fillna('NOT PROVIDED',inplace=True)
data['contbr_occupation'].fillna('NOT PROVIDED',inplace=True)
登录后复制
2.2数据转换
# 利用字典映射进行转换:党派分析
print('共有{}位候选人'.format(len(data['cand_nm'].unique())))

#通过搜索引擎等途径,获取到每个总统候选人的所属党派,建立字典parties,候选人名字作为键,所属党派作为对应的值
parties = {'Bachmann, Michelle': 'Republican',
'Cain, Herman': 'Republican',
'Gingrich, Newt': 'Republican',
'Huntsman, Jon': 'Republican',
'Johnson, Gary Earl': 'Republican',
'McCotter, Thaddeus G': 'Republican',
'Obama, Barack': 'Democrat',
'Paul, Ron': 'Republican',
'Pawlenty, Timothy': 'Republican',
'Perry, Rick': 'Republican',
"Roemer, Charles E. 'Buddy' III": 'Republican',
'Romney, Mitt': 'Republican',
'Santorum, Rick': 'Republican'}

#通过map映射函数,增加一列party存储党派信息
data['party']=data['cand_nm'].map(parties)
#查看两党情况
print(data['party'].value_counts())
# 结果显示民主党获得赞助多于共和党

# 按照职业汇总对赞助总金额进行排序
# ascending=True是升序排序,False为降序;inplace=Ture则是修改原dataframe,默认为False
data.groupby('contbr_occupation')['contb_receipt_amt'].sum().sort_values(ascending=True)

#建立一个职业对应字典,把相同职业的不同表达映射为对应的职业,比如把C.E.O.映射为CEO
occupation_map = {
'INFORMATION REQUESTED PER BEST EFFORTS':'NOT PROVIDED',
'INFORMATION REQUESTED':'NOT PROVIDED',
'SELF' : 'SELF-EMPLOYED',
'SELF EMPLOYED' : 'SELF-EMPLOYED',
'C.E.O.':'CEO',
'LAWYER':'ATTORNEY',
}

# 如果不在字典中,返回x
f = lambda x: occupation_map.get(x, x)
data.contbr_occupation = data.contbr_occupation.map(f)

# 对雇主信息进行类似转换
emp_mapping = {
'INFORMATION REQUESTED PER BEST EFFORTS' : 'NOT PROVIDED',
'INFORMATION REQUESTED' : 'NOT PROVIDED',
'SELF' : 'SELF-EMPLOYED',
'SELF EMPLOYED' : 'SELF-EMPLOYED',
}

# If no mapping provided, return x
f = lambda x: emp_mapping.get(x, x)
data.contbr_employer = data.contbr_employer.map(f)
登录后复制

2.3数据筛选
#查看各大候选人获得的赞助总金额
data.groupby('cand_nm')['contb_receipt_amt'].sum().sort_values(ascending=False)#降序

#提取候选人Obama,Romney的数据
data_vs=data[data['cand_nm'].isin(['Obama, Barack','Romney, Mitt'])].copy()
print(data_vs)
登录后复制
2.4 面元化数据
bins=np.array([0,1,10,100,1000,10000,100000,1000000,10000000])
labels=pd.cut(data_vs['contb_receipt_amt'],bins)
print(labels)

# 对赞助金额进行分组分析(matplotlib画图)
# 前面我们已经利用pd.cut()函数,根据出资额大小将数据离散化到多个面元中,接下来我们就要对每个离散化的面元进行分组分析
#
# 首先统计各出资区间的赞助笔数,这里用到unstack(),stack()函数是堆叠,unstack()函数就是不要堆叠,即把多层索引变为表格数据
#labels是之前赞助金额离散化后的Series
print('对赞助金额进行分组分析')
group_bins=data_vs.groupby(['cand_nm',labels])
print(group_bins.size().unstack(0))

# 统计各区间的赞助金额
bucket_sums=group_bins['contb_receipt_amt'].sum().unstack(0)
print(bucket_sums)

#Obama、Romney各区间赞助总金额
bucket_sums.plot(kind='bar')
plt.show()

# 上图虽然能够大概看出Obama、Romney的赞助金额区间分布,但对比并不够突出,如果用百分比堆积图效果会更好,下面我们就实现以下。
#算出每个区间两位候选人收到赞助总金额的占比
normed_sums = bucket_sums.div(bucket_sums.sum(axis=1),axis=0)
#使用柱状图,指定stacked=True进行堆叠,即可完成百分比堆积图
normed_sums[:-2].plot(kind='bar',stacked=True)
plt.show()
# 可以看出,小额赞助方面,Obama获得的数量和金额比Romney多得多

# 按照赞助人姓名分组计数,计算重复赞助次数最多的前20人
contbr_nm_20=data.groupby('contbr_nm')['contbr_nm'].count().sort_values(ascending=False)[:20]
print(contbr_nm_20)
登录后复制

3. 数据聚合与分组运算
分组计算Grouping,分组运算是一个“split-apply-combine”的过程:拆分,pandas对象中的数据会根据你所提供的一个或多个键被拆分为多组应用,将一个函数应用到各个分组并产生一个新值合并,所有这些函数的执行结果会合并到最终的结果对象中

3.1 透视表(pivot_table)分析党派和职业
# 通过pivot_table根据党派和职业对数据进行聚合,然后过滤掉总出资不足200万美元的数据
#按照党派、职业对赞助金额进行汇总,类似excel中的透视表操作,聚合函数为sum
# 职业
by_occupation=data.pivot_table('contb_receipt_amt',index='contbr_occupation',columns='party',aggfunc='sum')
#过滤掉赞助金额少于200w数据
over_200=by_occupation[by_occupation.sum(1)>2000000]
# print(over_200)
over_200.plot(kind='bar')
# plt.show()
登录后复制
3.2 分组级运算和转换
# 根据职业与雇主信息分组运算
# 对Obama和Romney总出资最高的职业和雇主
# grouped = data_vs.groupby('cand_nm')
# totals=grouped.apply('cand_nm').groupby('','contbr_occupation')['contb_receipt_amt'].sum().sort_values(ascending=False)[:10]
# print(totals)
# 由于职业和雇主的处理非常相似,我们定义函数get_top_amounts()对两个字段进行分析处理

def get_top_amounts(group, key, n=5):
# 传入groupby分组后的对象,返回按照key字段汇总的排序前n的数据
totals = group.groupby(key)['contb_receipt_amt'].sum()
return totals.sort_values(ascending=False)[:n]

grouped = data_vs.groupby('cand_nm')
gr_data=grouped.apply(get_top_amounts, 'contbr_occupation', n=7)
print(gr_data)
# 从数据可以看出,Obama更受精英群体(律师、医生、咨询顾问)的欢迎,Romney则得到更多企业家或企业高管的支持
#对雇主处理
gr_data=grouped.apply(get_top_amounts, 'contbr_employer', n=7)
print(gr_data)
登录后复制

4.时间处理
4.1str转datetime
# 我们可以使用to_datetime方法解析多种不同的日期表示形式。
# 对标准日期格式(如ISO8601)的解析非常快。我们也可以指定特定的日期解析格式,
# 如pd.to_datetime(series,format='%Y%m%d')
data_vs['time']=pd.to_datetime(data_vs['contb_receipt_dt'])
登录后复制
4.2时间索引
data_vs.set_index('time',inplace=True)#在data_vs上修改
# data_vs.head()
登录后复制
4.3重采样与频度转换
重采样(Resampling)指的是把时间序列的频度变为另一个频度的过程。
把高频度的数据变为低频度叫做降采样(downsampling),resample会对数据进行分组,然后再调用聚合函数。
这里我们把频率从每日转换为每月,属于高频转低频的降采样。

vs_time=data_vs.groupby('cand_nm').resample('M')['cand_nm'].count().unstack(0)
print(vs_time)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data1=pd.read_csv('data_01.csv')
data2=pd.read_csv('data_02.csv')
data3=pd.read_csv('data_03.csv')
#数据合并
data=pd.concat([data1,data2,data3])

#数据预览和基本统计分析

#查看数据的信息,包括每个字段的名称、非空数量、字段的数据类型
print(data.info())
#经过观察发现employer,occupation有缺失值

# cand_nm – 接受捐赠的候选人姓名
# contbr_nm – 捐赠人姓名
# contbr_st – 捐赠人所在州
# contbr_employer – 捐赠人所在公司
# contbr_occupation – 捐赠人职业
# contb_receipt_amt – 捐赠数额(美元)
# contb_receipt_dt – 收到捐款的日期

# print(data.head())
#用统计学指标快速描述数据的概要
print(data.describe())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2.数据清洗
2.1缺失值处理
#从data.info()得知,contbr_employer、contbr_occupation均有少量缺失值,均填充为NOT PROVIDED
data['contbr_employer'].fillna('NOT PROVIDED',inplace=True)
data['contbr_occupation'].fillna('NOT PROVIDED',inplace=True)
1
2
3
1
2
3
2.2数据转换
# 利用字典映射进行转换:党派分析
print('共有{}位候选人'.format(len(data['cand_nm'].unique())))

#通过搜索引擎等途径,获取到每个总统候选人的所属党派,建立字典parties,候选人名字作为键,所属党派作为对应的值
parties = {'Bachmann, Michelle': 'Republican',
'Cain, Herman': 'Republican',
'Gingrich, Newt': 'Republican',
'Huntsman, Jon': 'Republican',
'Johnson, Gary Earl': 'Republican',
'McCotter, Thaddeus G': 'Republican',
'Obama, Barack': 'Democrat',
'Paul, Ron': 'Republican',
'Pawlenty, Timothy': 'Republican',
'Perry, Rick': 'Republican',
"Roemer, Charles E. 'Buddy' III": 'Republican',
'Romney, Mitt': 'Republican',
'Santorum, Rick': 'Republican'}

#通过map映射函数,增加一列party存储党派信息
data['party']=data['cand_nm'].map(parties)
#查看两党情况
print(data['party'].value_counts())
# 结果显示民主党获得赞助多于共和党

# 按照职业汇总对赞助总金额进行排序
# ascending=True是升序排序,False为降序;inplace=Ture则是修改原dataframe,默认为False
data.groupby('contbr_occupation')['contb_receipt_amt'].sum().sort_values(ascending=True)

#建立一个职业对应字典,把相同职业的不同表达映射为对应的职业,比如把C.E.O.映射为CEO
occupation_map = {
'INFORMATION REQUESTED PER BEST EFFORTS':'NOT PROVIDED',
'INFORMATION REQUESTED':'NOT PROVIDED',
'SELF' : 'SELF-EMPLOYED',
'SELF EMPLOYED' : 'SELF-EMPLOYED',
'C.E.O.':'CEO',
'LAWYER':'ATTORNEY',
}

# 如果不在字典中,返回x
f = lambda x: occupation_map.get(x, x)
data.contbr_occupation = data.contbr_occupation.map(f)

# 对雇主信息进行类似转换
emp_mapping = {
'INFORMATION REQUESTED PER BEST EFFORTS' : 'NOT PROVIDED',
'INFORMATION REQUESTED' : 'NOT PROVIDED',
'SELF' : 'SELF-EMPLOYED',
'SELF EMPLOYED' : 'SELF-EMPLOYED',
}

# If no mapping provided, return x
f = lambda x: emp_mapping.get(x, x)
data.contbr_employer = data.contbr_employer.map(f)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2.3数据筛选
#查看各大候选人获得的赞助总金额
data.groupby('cand_nm')['contb_receipt_amt'].sum().sort_values(ascending=False)#降序

#提取候选人Obama,Romney的数据
data_vs=data[data['cand_nm'].isin(['Obama, Barack','Romney, Mitt'])].copy()
print(data_vs)
1
2
3
4
5
6
1
2
3
4
5
6
2.4 面元化数据
bins=np.array([0,1,10,100,1000,10000,100000,1000000,10000000])
labels=pd.cut(data_vs['contb_receipt_amt'],bins)
print(labels)

# 对赞助金额进行分组分析(matplotlib画图)
# 前面我们已经利用pd.cut()函数,根据出资额大小将数据离散化到多个面元中,接下来我们就要对每个离散化的面元进行分组分析
#
# 首先统计各出资区间的赞助笔数,这里用到unstack(),stack()函数是堆叠,unstack()函数就是不要堆叠,即把多层索引变为表格数据
#labels是之前赞助金额离散化后的Series
print('对赞助金额进行分组分析')
group_bins=data_vs.groupby(['cand_nm',labels])
print(group_bins.size().unstack(0))

# 统计各区间的赞助金额
bucket_sums=group_bins['contb_receipt_amt'].sum().unstack(0)
print(bucket_sums)

#Obama、Romney各区间赞助总金额
bucket_sums.plot(kind='bar')
plt.show()

# 上图虽然能够大概看出Obama、Romney的赞助金额区间分布,但对比并不够突出,如果用百分比堆积图效果会更好,下面我们就实现以下。
#算出每个区间两位候选人收到赞助总金额的占比
normed_sums = bucket_sums.div(bucket_sums.sum(axis=1),axis=0)
#使用柱状图,指定stacked=True进行堆叠,即可完成百分比堆积图
normed_sums[:-2].plot(kind='bar',stacked=True)
plt.show()
# 可以看出,小额赞助方面,Obama获得的数量和金额比Romney多得多

# 按照赞助人姓名分组计数,计算重复赞助次数最多的前20人
contbr_nm_20=data.groupby('contbr_nm')['contbr_nm'].count().sort_values(ascending=False)[:20]
print(contbr_nm_20)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
3. 数据聚合与分组运算
分组计算Grouping,分组运算是一个“split-apply-combine”的过程:拆分,pandas对象中的数据会根据你所提供的一个或多个键被拆分为多组应用,将一个函数应用到各个分组并产生一个新值合并,所有这些函数的执行结果会合并到最终的结果对象中

3.1 透视表(pivot_table)分析党派和职业
# 通过pivot_table根据党派和职业对数据进行聚合,然后过滤掉总出资不足200万美元的数据
#按照党派、职业对赞助金额进行汇总,类似excel中的透视表操作,聚合函数为sum
# 职业
by_occupation=data.pivot_table('contb_receipt_amt',index='contbr_occupation',columns='party',aggfunc='sum')
#过滤掉赞助金额少于200w数据
over_200=by_occupation[by_occupation.sum(1)>2000000]
# print(over_200)
over_200.plot(kind='bar')
# plt.show()
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
3.2 分组级运算和转换
# 根据职业与雇主信息分组运算
# 对Obama和Romney总出资最高的职业和雇主
# grouped = data_vs.groupby('cand_nm')
# totals=grouped.apply('cand_nm').groupby('','contbr_occupation')['contb_receipt_amt'].sum().sort_values(ascending=False)[:10]
# print(totals)
# 由于职业和雇主的处理非常相似,我们定义函数get_top_amounts()对两个字段进行分析处理

def get_top_amounts(group, key, n=5):
# 传入groupby分组后的对象,返回按照key字段汇总的排序前n的数据
totals = group.groupby(key)['contb_receipt_amt'].sum()
return totals.sort_values(ascending=False)[:n]

grouped = data_vs.groupby('cand_nm')
gr_data=grouped.apply(get_top_amounts, 'contbr_occupation', n=7)
print(gr_data)
# 从数据可以看出,Obama更受精英群体(律师、医生、咨询顾问)的欢迎,Romney则得到更多企业家或企业高管的支持
#对雇主处理
gr_data=grouped.apply(get_top_amounts, 'contbr_employer', n=7)
print(gr_data)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
4.时间处理
4.1str转datetime
# 我们可以使用to_datetime方法解析多种不同的日期表示形式。
# 对标准日期格式(如ISO8601)的解析非常快。我们也可以指定特定的日期解析格式,
# 如pd.to_datetime(series,format='%Y%m%d')
data_vs['time']=pd.to_datetime(data_vs['contb_receipt_dt'])
1
2
3
4
1
2
3
4
4.2时间索引
data_vs.set_index('time',inplace=True)#在data_vs上修改
# data_vs.head()
1
2
1
2
4.3重采样与频度转换
重采样(Resampling)指的是把时间序列的频度变为另一个频度的过程。
把高频度的数据变为低频度叫做降采样(downsampling),resample会对数据进行分组,然后再调用聚合函数。
这里我们把频率从每日转换为每月,属于高频转低频的降采样。

vs_time=data_vs.groupby('cand_nm').resample('M')['cand_nm'].count().unstack(0)
print(vs_time)
1
2
1
2
# 我们用面积图把11年4月-12年4月两位总统候选人接受的赞助笔数做个对比可以看出,越临近竞选,大家赞助的热情越高涨,奥巴马在各个时段都占据绝对的优势
fig1, ax1=plt.subplots(figsize=(32,8))
vs_time.plot(kind='area',ax=ax1,alpha=0.6)
plt.show()
1
2
3
4
1
2
3
4
文章知识点与官方知识档案匹配
Python入门技能树结构化数据分析工具PandasPandas概览
190325 人正在系统学习中
点击阅读全文

奥巴马的竞选资金是一点点从选民那里募集来的。如获党内提名,可得政府拔款,但也没多少。美国大选不仅禁外国人捐款,而且禁止公司机构捐款,而只允许个人捐款。不仅如此,还为个人捐款限制了上限,防止富人捐过多的款而影响未来的公平执政。
不仅富人自己不能多捐,如果某个老板呼吁自己的员工给某人捐钱或投票支持他,都是犯法的。因此,想要筹到几千万竞争资金,唯一的办法是争取更多选民支持,一点点募集。所以,中国、公司、大笔捐款,这三条都是犯法的。
我记得以前已经有华人闹过这种丑闻了。美国的选举法就是要严防少数人企图用几个臭钱影响美国的政治。所以我们作为外国人就更别去自讨没趣了。

  • 璋佺敤杩python涓鐨勭涓夋柟搴揻ace recognition
    绛旓細娉ㄦ剰锛氳繖閲屼娇鐢ㄤ簡python-OpenCV锛屼竴瀹氳閰嶇疆濂戒簡opencv鎵嶈兘杩愯鎴愬姛銆傝繍琛岀粨鏋滐細绋嬪簭浼氳鍙栧綋鍓嶇洰褰曚笅鎸囧畾鐨勫浘鐗囷紝鐒跺悗璇嗗埆鍏朵腑鐨勪汉鑴革紝骞舵爣娉ㄦ瘡涓汉鑴搞傦紙浣跨敤鍥剧墖鏉ヨ嚜缇庡墽纭呰胺锛夌紪鍐欎汉鑴告瘮瀵圭▼搴 棣栧厛锛屾垜鍦ㄧ洰褰曚笅鏀句簡鍑犲紶鍥剧墖锛氳繖閲岀敤鍒扮殑鏄竴寮犱箶甯冩柉鐨勭収鐗囧拰涓寮濂ュ反椹鐨勭収鐗囷紝鍜屼竴寮犳湭鐭ョ殑鐓х墖銆傜紪鍐...
  • 灏忓鐢熷璁$畻鏈虹紪绋嬪ソ涔?
    绛旓細褰撶劧鏄ソ鐨勩傞鍏堬紝缂栫▼鑳藉甯姪瀛╁瓙寤虹珛鏁板鎬濈淮銆傛湁浜涘瀛愮殑鏁板涓嶅ソ锛屽苟涓嶆槸璁$畻鑳藉姏涓嶈繃鍏筹紝鑰屾槸鎷垮埌棰樼洰涓嶇煡閬撴庝箞涓姝ヤ竴姝ュ湴鎶婂畠鎷嗗垎鎴愮畝鍗曠殑瑙i姝ラ锛岃剳瀛愰噷涓鍥贡楹汇備絾鏄紪绋嬶紝灏辨槸闇瑕佷綘鎶婁竴浠朵簨鎯呭啓鎴愭竻鏅扮殑涓涓釜姝ラ锛岃繖鏍蜂篃鏄府鍔╀綘鐞嗘竻鍒嗘瀽闂鐨勬濊矾锛屽瀛︿範鏁板寰堟湁甯姪銆傚叾娆★紝瀛︾紪绋...
  • Affordability Housing缁忔祹閫傜敤鎴
    绛旓細鐒惰,鍦ㄦ墍鏈夎繖浜涢夋嫨涓,鐢辫仈閭︽斂搴滆繍钀ョ殑LIHTC椤圭洰鏄縿浠婁负姝负寮鍙戝鎴风粡娴庨傜敤浣忔埧鎻愪緵琛ヨ创鐨勬渶閲嶈璧勯噾鏉ユ簮銆 Outside of public subsidies, government-run housing programs, or non-profit mechanisms, affordable housing advocates look for ways to maintain affordability in the open market through cost ...
  • 涓鏂囦簡瑙d粈涔堟槸Python闈㈠悜瀵硅薄涓殑缁ф壙
    绛旓細1銆佷粈涔堟槸缁ф壙锛熺户鎵挎寚鐨勬槸绫讳笌绫讳箣闂寸殑鍏崇郴锛屾槸涓绉嶄粈涔堟槸浠涔堢殑鍏崇郴锛屽姛鑳戒箣涓灏辨槸鐢ㄦ潵瑙e喅浠g爜閲嶇敤闂銆傜户鎵挎槸涓绉嶅垱寤烘柊绫荤殑鏂瑰紡锛屽湪python涓锛屾柊寤虹殑绫诲彲浠ョ户鎵夸竴涓垨澶氫釜鐖剁被锛岀埗绫诲張鍙О涓哄熀绫绘垨瓒呯被锛屾柊寤虹殑绫荤О涓烘淳鐢熺被鎴栧瓙绫伙紝缁ф壙鍙堝垎涓哄崟缁ф壙鍜屽缁ф壙銆俢lass ParentClass1: #瀹氫箟鐖剁被...
  • 灏戝効缂栫▼涓昏鏄浠涔堝唴瀹?
    绛旓細灏忓瀛愬涔犲皯鍎跨紪绋嬪拰鎴愪汉缂栫▼鐨勮绋嬪唴瀹规湁鏈川鐨勫尯鍒紝鐜板湪鐨勫皯鍎跨紪绋嬩竴鑸兘涓嶄細鏁欏お澶嶆潅鐨勪笢瑗匡紝瀛︿範鐨勪篃閮芥槸绠鍗曟槗鎳傜殑涓滆タ锛屾瘮濡傚浘褰㈠寲缂栫▼灏辨槸閫氳繃鎼Н鏈ㄧ殑鏂瑰紡闈炲父鐩磋鐨勪娇鐢ㄤ唬鐮佸潡鏉ュ疄鐜颁竴浜涘姛鑳斤紝鑰屼笉鏄澶氫汉鎯宠薄涓殑閭f牱鏁蹭唬鐮佸拰瀛楁瘝涓蹭箣绫荤殑銆傚皯鍎跨紪绋嬩富瑕佹槸閫氳繃缂栫▼鎬濈淮鍩硅鏉ユ縺鍙戝瀛愮殑鍒涢犳...
  • 2010骞村浗闄呭舰鍔夸笌鏀跨瓥璁烘枃 褰撳墠鍥介檯缁忔祹褰㈠娍鐨勭幇鐘朵笌鏈潵
    绛旓細鍥犳,褰撳墠鍒烘縺缁忔祹鐨勪富瑕璧勯噾鏉ユ簮浠嶇劧鏉ヨ嚜鏀垮簻鐨勬墿澶ф敮鍑,閲戣瀺閮ㄩ棬鎯滆捶鐜拌薄渚濈劧涓ラ噸,骞朵笖鍙兘瑕佹寔缁竴瀹氱殑鏃堕棿銆傜洰鍓嶈锤鏄撹瀺璧勫洶闅惧凡鎴愪负鎶戝埗璐告槗澧為暱鐨勯殰纰嶄箣涓銆(涓)瑙e喅楂樺け涓氱殑鍥伴毦鎬ч噾铻嶅嵄鏈虹粰鍚勫浗灏变笟褰㈠娍钂欎笂宸ㄥぇ闃村奖,鑷2008骞村け涓氫汉鏁拌繀閫熶笂鍗囦互鏉,2009骞翠互鏉ュ叏鐞冨氨涓氬舰鍔挎棩瓒嬫伓鍖栥傚巻娆¢噾铻嶅嵄鏈虹殑鏁欒琛ㄦ槑,鍦ㄧ粡娴庡紑濮...
  • 缇庡浗鍊哄姟杩濈害瀵逛腑鍥戒汉姘戠殑鐢熸椿鏈変粈涔堝奖鍝???
    绛旓細3. 浠婂勾5鏈堬紝缇庡浗鍏叡鍊哄姟鎬婚绐佺牬14.3涓囦嚎缇庡厓涓婇檺銆傜敱浜庝笉鑳介氳繃鍙戣鍥藉虹闆嗚祫閲戯紝鏀垮簻寮鏀緷璧栦簬鍚戞斂搴滃吇鑰佸熀閲戠殑鍊熸銆傜劧鑰岋紝鏍规嵁缇庡浗璐㈡斂閮ㄧ殑棰勬祴锛屽埌8鏈2鏃ワ紝杩欎簺涓存椂璧勯噾鏉ユ簮涔熷皢鏋銆4. 鎻愰珮鍊哄姟涓婇檺鐨勮皥鍒ゅ湪鍥戒細涓櫡鍏ュ兊灞銆傛墽鏀跨殑姘戜富鍏氫富寮犱竴娆℃ф彁楂樺哄姟涓婇檺锛屼互鏀寔鍒版槑骞存荤粺澶ч変箣鍚庣殑...
  • 娓呮磥鑳芥簮甯傚満鏄庢牱鍐峰嵈涓嬫潵鐨?
    绛旓細1. 浜掕仈缃戞场娌拰911涔嬪悗锛孷C瀵绘壘鏂扮殑鎶曡祫璁″垝锛岀瀯鍑嗘柊鑳芥簮 2. 鍏紬鏁欒偛銆07骞达紝Al Gore鐨勭邯褰曠墖an inconvenient truth鑾峰緱濂ユ柉鍗℃渶浣崇邯褰曠墖濂栵紝Al Gore鍥犱负鐜鍜屾皵鍊欐柟闈㈢殑宸ヤ綔鑾峰緱璇鸿礉灏斿拰骞冲 3. 鏀垮簻鎵舵寔銆05骞村拰07骞寸背鍥芥斂搴滈氳繃涓ら」娉曟锛屼负鏂拌兘婧愪紒涓氭彁渚涘噺绋庡拰璐锋鏀跨瓥銆濂ュ反椹鏀垮簻涔熷ぇ鍔涙壎鎸 4....
  • 09骞村摜鏈搱鏍逛細璁渶缁堝喅瀹氫簡浠涔?
    绛旓細鍐冲畾浜嗘妸浜夊惖涓庡埄鐩婁簤澶虹暀鍒颁笅涓娆′細璁笂缁х画杩涜锛侊紒
  • 澶ф暟鎹殑瀹氫箟鏄粈涔?
    绛旓細澶ф暟鎹垨绉板法閲忚祫鏂欙紝鎸囩殑鏄墍娑夊強鐨勮祫鏂欓噺瑙勬ā宸ㄥぇ鍒版棤娉曢忚繃涓绘祦杞欢宸ュ叿锛屽湪鍚堢悊鏃堕棿鍐呰揪鍒版挿鍙栥佺鐞嗐佸鐞嗐佸苟鏁寸悊鎴愪负甯姪浼佷笟缁忚惀鍐崇瓥鏇寸Н鏋佺洰鐨勭殑璧勮銆傚ぇ鏁版嵁闇瑕佺壒娈婄殑鎶鏈紝浠ユ湁鏁堝湴澶勭悊澶ч噺鐨勫蹇嶇粡杩囨椂闂村唴鐨勬暟鎹傞傜敤浜庡ぇ鏁版嵁鐨勬妧鏈紝鍖呮嫭澶ц妯″苟琛屽鐞嗭紙MPP锛夋暟鎹簱銆佹暟鎹寲鎺樸佸垎甯冨紡鏂囦欢绯荤粺銆...
  • 扩展阅读:私人无法说明个人资金来源 ... 跑python吃显卡吗 ... 深拷贝python ... python实时获取股票数据 ... python与大数据分析及处理 ... 微马队的资金来源 ... python廖雪峰官网 ... python资料大全 ... 顶背离代码python ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网