12345huangchun

  一、人口分析

  现在有三个文本文件,state-abbrevs.csv存放的是每个州的名字及简写;state-areas.csv存放的州名和占地面积;state-population.csv存放的州名简写和人口信息。

  1,题目要求

- 导入文件,查看原始数据
    - 将人口数据和各州简称数据进行合并
    - 将合并的数据中重复的abbreviation列进行删除
    - 查看存在缺失数据的列
    - 找到有哪些state/region使得state的值为NaN,进行去重操作
    - 为找到的这些state/region的state项补上正确的值,从而去除掉state这一列的所有NaN
    - 合并各州面积数据areas
    - 我们会发现area(sq.mi)这一列有缺失数据,找出是哪些行
    - 去除含有缺失数据的行
    - 找出2010年的全民人口数据
    - 计算各州的人口密度
    - 排序,并找出人口密度最高的五个州   df.sort_values()

  2,导入文件,查看每个表的数据

import numpy as np
from pandas import DataFrame,Series
import pandas as pd

f1=pd.read_csv(\'state-abbrevs.csv\')
f2=pd.read_csv(\'state-areas.csv\')
f3=pd.read_csv(\'state-population.csv\')

  3,将人口数据和各州的简称数据合并,然后把重复的列给删除

f4=pd.merge(f1,f3,left_on=\'abbreviation\',right_on=\'state/region\',how=\'outer\')
f5=f4.drop(labels=\'abbreviation\',axis=1)
f5.head()

  4,查看存在缺失数据的列

f5.isnull().any(axis=0)

  5,找出缺失‘state’数据的州的简称

f5.loc[f5[\'state\'].isnull()][\'state/region\'].unique()

  6,给缺失的‘state’补上对应的值

indexs1=f5.loc[f5[\'state/region\']==\'PR\'].index
f5.loc[indexs1,\'state\']=\'prorrrr\'
indexs2=f5.loc[f5[\'state/region\']==\'USA\'].index
f5.loc[indexs2,\'state\']=\'unista\'

  7,合并各州面积数据

f6=pd.merge(f5,f2,on=\'state\')
f6.head()

  8,找出缺失area的行,然后删除

con = f6[\'area (sq. mi)\'].isnull()
indexs = f6.loc[con].index
f6.drop(labels=indexs,axis=0,inplace=True)

  9,找出2010年的全民人口数据

f7=f6.query(\'year==2010 & ages=="total"\')
f7.head()

  10,计算各州的人口密度

f7[\'ss\']=f7[\'population\']/f7[\'area (sq. mi)\']
f7.head()

  11,排序,找出人口密度最高的前5个

f7.sort_values(\'ss\',axis=0,ascending=False).head()

  二、总统候选人政治献金数据分析

  现在有一个usa_election.txt文本文件,存放的是总统候选人政治献金的相关数据。

  1,题目要求

 1.读取文件usa_election.txt
 2.查看文件样式及基本信息
 3.【知识点】使用map函数+字典,新建一列各个候选人所在党派party
 4.使用np.unique()函数查看colums:party这一列中有哪些元素
 5.使用value_counts()函数,统计party列中各个元素出现次数,value_counts()是Series中的,无参,返回一个带有每个元素出现次数的Series
 6.【知识点】使用groupby()函数,查看各个党派收到的政治献金总数contb_receipt_amt
7.查看具体每天各个党派收到的政治献金总数contb_receipt_amt 。使用groupby([多个分组参数])
8. 将表中日期格式转换为\'yyyy-mm-dd\'。日期格式,通过函数加map方式进行转换
9.查看老兵(捐献者职业)DISABLED VETERAN主要支持谁 :查看老兵们捐赠给谁的钱最多

  2,读取文件

usa_election=pd.read_csv(\'./data/usa_election.txt\')
usa_election.head()

  3,新建一列为各候选人所在党派party

parties = {
  \'Bachmann, Michelle\': \'Republican\',
  \'Romney, Mitt\': \'Republican\',
  \'Obama, Barack\': \'Democrat\',
  "Roemer, Charles E. \'Buddy\' III": \'Reform\',
  \'Pawlenty, Timothy\': \'Republican\',
  \'Johnson, Gary Earl\': \'Libertarian\',
  \'Paul, Ron\': \'Republican\',
  \'Santorum, Rick\': \'Republican\',
  \'Cain, Herman\': \'Republican\',
  \'Gingrich, Newt\': \'Republican\',
  \'McCotter, Thaddeus G\': \'Republican\',
  \'Huntsman, Jon\': \'Republican\',
  \'Perry, Rick\': \'Republican\'           
 }
usa_election[\'party\']=usa_election[\'cand_nm\'].map(parties)
usa_election.head()

  4,查看所有候选人共几个党派,及各党派出现过多少次

usa_election[\'party\'].unique()
usa_election[\'party\'].value_counts()

  5,查看各党派收到的政治献金总数,查看每天各党派收到的政治献金总数

usa_election.groupby(by=\'party\')[\'contb_receipt_amt\'].sum()
usa_election.groupby([\'party\',\'contb_receipt_dt\'])[\'contb_receipt_amt\'].sum()

  6,把日期格式转化为数字格式,如“2013-11-12”

def transform_date(date):
    day,mon,year = date.split(\'-\')
    month = months[mon]
    return \'20\'+year + \'-\' + str(month) + \'-\' + day

usa_election[\'contb_receipt_dt\'] = usa_election[\'contb_receipt_dt\'].map(transform_date)

  7,查看老兵(职业为DISABLED VETERAN)支持谁,给谁捐款最多

old_bing=usa_election.loc[usa_election[\'contbr_occupation\'] == \'DISABLED VETERAN\']
old_bing.groupby(\'cand_nm\')[\'contb_receipt_amt\'].sum()

分类:

技术点:

相关文章: