首页 > 代码库 > python数据分析美国大选项目实战(三)

python数据分析美国大选项目实战(三)

项目介绍

项目地址:https://www.kaggle.com/fivethirtyeight/2016-election-polls

 

包含了2015年11月至2016年11月期间对于2016美国大选的选票数据,共27列。

项目目的:分析每个月的民意调查统计趋势。

涉及知识点:

  • 高阶函数filter
  • numpy读取文本文件
  • 处理日期格式数据
  • numpy的切片和索引
  • numpy的统计方法
  • 列表推导式
  • 数据结构zip
  • Matplotlib进行简单的数据可视化

 

项目代码

# -*- coding: utf-8 -*-

import numpy as np
import datetime
import matplotlib.pyplot as plt


def main():
    # 数据文件地址
    filename = ‘./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]

    # 数据读取
    data_array = np.loadtxt(filename,  # 文件名
                            delimiter=‘,‘,  # 分隔符
                            skiprows=1,  # 跳过第一行,即跳过列名
                            dtype=str,  # 数据类型
                            usecols=use_col_index_lst)  # 指定读取的列索引号

    # 处理日期格式数据
    enddate_idx = use_col_name_lst.index(‘enddate‘)
    enddate_lst = data_array[:, enddate_idx].tolist()
    # print enddate_lst

    # 将日期字符串格式统一,即‘yy/dd/mm‘
    enddate_lst = [enddate.replace(‘-‘, ‘/‘) for enddate in enddate_lst]

    # 将日期字符串转换成日期
    date_lst = [datetime.datetime.strptime(enddate, ‘%m/%d/%Y‘) for enddate in enddate_lst]

    # 构造年份-月份列表
    month_lst = [‘%d-%02d‘ % (date_obj.year, date_obj.month) for date_obj in date_lst]

    month_array = np.array(month_lst)
    months = np.unique(month_array)
    # print months

    # 统计民意投票数
    # cliton
    # 原始数据 rawpoll
    rawpoll_clinton_idx = use_col_name_lst.index(‘rawpoll_clinton‘)
    rawpoll_clinton_data = http://www.mamicode.com/data_array[:, rawpoll_clinton_idx]"""
    判断一个字符串能否转换为float
    """
    try:
        float(s)
    except:
        return False
    return True


def get_sum(str_array):
    """
    返回字符串数组中数字的总和
    """
    # 去掉不能转换成数字的数据
    cleaned_data = http://www.mamicode.com/filter(is_convert_float, str_array)>

 

python数据分析美国大选项目实战(三)