Python实战项目:基于jupyter notebook处理16年美国总统大选数据
设计需求说明
- 设计任务
按照月份求两位候选人民调数据的和,用折线图反映两位候选人民调的走势,用柱形图比较两位候选人民调的数据。 - 结构程序设计方法
加载外部的csv数据,加载的列:民调结束的时间(enddate),希拉里的民调(adjpoll_clinton),特朗普民调数据(adjpoll_trump)
对日期数据进行处理: mm/dd/yyyy -> yyyy-mm需要使用datetime模块
对数据处理:判断候选人数据的有效性; ------- 有空值 先做处理、数据格式做转换:由str类型转换为float浮点型并求和。
数据分析
可视化呈现:建表,绘制折线图、曲线图 - 操作系统:Windows、python3.5以上版本、jupyter notebook
各种python模块:numpy、pandas、Matplotlib等
以下是数据清单,需要从本地这份数据清单中获取我们需要的这三列信息。
源码展示以及实验截图:
导包,这些包都需要用到:
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import codecs
import csv
import datetime as dt
import pandas as pd
from pandas import DataFrame
#1、加载外部的csv数据:民调结束的时间、希拉里的民调数据、特朗普民调数据
#获取三列需要的数据
data = np.loadtxt('./presidential_polls.csv',dtype=np.str,usecols=(7,17,18),delimiter=',')
#print(data)
#获取除去标题的纯数据列
data_adjpoll = data.tolist()[1:]
#将日期数据进行处理 mm/dd/yyyy -> yyyy-mm
date = [i[0] for i in data_adjpoll] #list型
dates=[dt.datetime.strptime(date,'%m/%d/%Y') for date in date] #list型
date_new = [i.strftime('%Y-%m') for i in dates]#date_new是转换好格式以后的日期list
#先把两个候选人的数据提取出来(有空值,把空值置0)
#得到两组浮点类型数据,方便计算求和
adjpoll_clinton = [i[1] for i in data_adjpoll]
for i in range(len(adjpoll_clinton)):
if adjpoll_clinton[i] =='':
adjpoll_clinton[i]='0'
adjpoll_clinton_arr = np.array(adjpoll_clinton,dtype