1. 程式人生 > >實戰案例:美國總統競選

實戰案例:美國總統競選

2016年美國總統大選民意調查資料統計:

示例程式碼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)