数据分析之练习一

  一、人口分析

  现在有三个文本文件,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')

数据分析之练习一_第1张图片

数据分析之练习一_第2张图片

数据分析之练习一_第3张图片

  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张图片

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

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

数据分析之练习一_第5张图片

  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()

数据分析之练习一_第6张图片

  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()

数据分析之练习一_第7张图片

  10,计算各州的人口密度

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

数据分析之练习一_第8张图片

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

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

数据分析之练习一_第9张图片

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

  现在有一个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()

数据分析之练习一_第10张图片

  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()

数据分析之练习一_第11张图片

  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()

数据分析之练习一_第12张图片

你可能感兴趣的:(数据分析之练习一)