2016美国大选数据分析

2016年美国大选Trump数据分析:

案例题目:分析随时间推移的民意调查趋势,提取特朗普/克林顿的选票比率。
数据来源:https://www.kaggle.com/fivethirtyeight/2016-election-polls
数据介绍:该数据集包含了2015年11月至2016年11月期间对于2016美国大选的选票数据,共27列数据。包括按州,日期,民意调查和民意调查评分得出的原始和加权民意调查结果的数据。

import numpy as np
filename = "./data/presidential_polls.csv"
data_arr = np.genfromtxt(filename, # 需要打开的csv文件的文件名
           delimiter = ",", # csv文件的分隔符
           dtype=str, # 按字符串存储数据,不在转换为字节码
           usecols=(3, 17, 18, 19) # 表示读取文件里的列的索引位置
          )
print(data_arr, data_array.shape)
newdata_arr = data_arr[0:, 1:3] # 取出数据部分,第1行开始,第1列~第3列结束
newdata_arr = newdata_arr[1:9]  # 取出数据部分的1~9 行部分
newdata_arr = newdata_arr.astype(np.float64) # 把字符串数据部分转换为 float64 类型
print(newdata_arr, data_array.shape) 

[['matchup' 'adjpoll_clinton' 'adjpoll_trump' 'adjpoll_johnson']
 ['"Clinton vs. Trump vs. Johnson"' '42.6414' '40.86509' '5.675099']
 ['"Clinton vs. Trump vs. Johnson"' '43.29659' '44.72984' '3.401513']
 ...
 ['"Clinton vs. Trump vs. Johnson"' '45.9713' '39.97518' '']
 ['"Clinton vs. Trump vs. Johnson"' '45.2939' '46.66175' '1.596946']
 ['"Clinton vs. Trump vs. Johnson"' '31.62721' '44.65947' '']] (10236, 5)
[[42.6414  40.86509]
 [43.29659 44.72984]
 [46.29779 40.72604]
 [46.35931 45.30585]
 [45.32744 42.20888]
 [44.6508  42.26663]
 [46.21834 43.56017]
 [46.89049 43.50333]] (10236, 5)
# genfromtxt
import numpy as np
# 读取列名,即第一行数据
filename = './data/presidential_polls.csv'
with open(filename, 'r') as f:
    col_names_str = f.readline()[:-1] # [:-1]表示不读取末尾的换行符'\n'

# 将字符串拆分,并组成列表
col_name_lst = col_names_str.split(',')

# 使用的列名:结束时间,克林顿原始票数,川普原始票数,克林顿调整后票数,川普调整后票数
use_col_name_lst = ['enddate', 'rawpoll_clinton', 'rawpoll_trump','adjpoll_clinton', 'adjpoll_trump']

# 获取相应列名的索引号
use_col_index_lst = [col_name_lst.index(use_col_name) for use_col_name in use_col_name_lst]

# 通过genfromtxt()读取本地csv文件,
data_array = np.genfromtxt(filename,      # 文件名
                        delimiter=',', # csv文件的分隔符
                        #skiprows=1,    # 跳过第一行,即跳过列名
                        dtype=str,     # 数据类型,数据不再是Unicode字符串
                        usecols=use_col_index_lst)# 指定读取的列索引号


# genfromtxt() 不能通过 skiprows 跳过第一行的
# ['enddate' 'rawpoll_clinton' 'rawpoll_trump' 'adjpoll_clinton' 'adjpoll_trump']

# 去掉第一行
print(data_array[0], data_array.shape)
data_array = data_array[1:]

# 打印ndarray数据
print(data_array[1:], data_array.shape)
[['enddate' 'rawpoll_clinton' 'rawpoll_trump' 'adjpoll_clinton'
  'adjpoll_trump']
 ['10/31/2016' '37.69' '35.07' '42.6414' '40.86509']
 ['10/30/2016' '45' '46' '43.29659' '44.72984']
 ...
 ['9/22/2016' '46.54' '40.04' '45.9713' '39.97518']
 ['6/21/2016' '43' '43' '45.2939' '46.66175']
 ['8/18/2016' '32.54' '43.61' '31.62721' '44.65947']]
['enddate' 'rawpoll_clinton' 'rawpoll_trump' 'adjpoll_clinton'
 'adjpoll_trump'] (10237, 5)
[['10/30/2016' '45' '46' '43.29659' '44.72984']
 ['10/30/2016' '48' '42' '46.29779' '40.72604']
 ['10/24/2016' '48' '45' '46.35931' '45.30585']
 ...
 ['9/22/2016' '46.54' '40.04' '45.9713' '39.97518']
 ['6/21/2016' '43' '43' '45.2939' '46.66175']
 ['8/18/2016' '32.54' '43.61' '31.62721' '44.65947']] (10236, 5)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值