實戰案例:美國總統競選
阿新 • • 發佈:2018-11-02
2016年美國總統大選民意調查資料統計:
-
專案地址:https://www.kaggle.com/fivethirtyeight/2016-election-polls
-
該資料集包含了2015年11月至2016年11月期間對於2016美國大選的選票資料,共27列資料
示例程式碼1 :
# loadtxt import numpy as np # csv 名逗號分隔值檔案 filename = './presidential_polls.csv' # 通過loadtxt()讀取本地csv檔案 data_array = np.loadtxt(filename, #檔名 delimiter=',', # 分隔符 dtype=str, # 資料型別,資料是Unicode字串 usecols=(0,2,3)) # 指定讀取的列號 # 列印ndarray資料,保留第一行 print(data_array, data_array.shape)
執行結果:
[["b'cycle'" "b'type'" "b'matchup'"] ["b'2016'" 'b\'"polls-plus"\'' 'b\'"Clinton vs. Trump vs. Johnson"\''] ["b'2016'" 'b\'"polls-plus"\'' 'b\'"Clinton vs. Trump vs. Johnson"\''] ..., ["b'2016'" 'b\'"polls-only"\'' 'b\'"Clinton vs. Trump vs. Johnson"\''] ["b'2016'" 'b\'"polls-only"\'' 'b\'"Clinton vs. Trump vs. Johnson"\''] ["b'2016'" 'b\'"polls-only"\'' 'b\'"Clinton vs. Trump vs. Johnson"\'']] (10237, 3)
示例程式碼2:
import numpy as np # 讀取列名,即第一行資料 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=',', # 分隔符 #skiprows=1, # 跳過第一行,即跳過列名 dtype=str, # 資料型別,資料不再是Unicode字串 usecols=use_col_index_lst)# 指定讀取的列索引號 # genfromtxt() 不能通過 skiprows 跳過第一行的 # ['enddate' 'rawpoll_clinton' 'rawpoll_trump' 'adjpoll_clinton' 'adjpoll_trump'] # 去掉第一行 data_array = data_array[1:] # 列印ndarray資料 print(data_array[1:], data_array.shape)
執行結果:
[['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)