数据分析之练习一
一、人口分析
現在有三個文本文件,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 pdf1=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.txt2.查看文件樣式及基本信息3.【知識點】使用map函數+字典,新建一列各個候選人所在黨派party4.使用np.unique()函數查看colums:party這一列中有哪些元素5.使用value_counts()函數,統計party列中各個元素出現次數,value_counts()是Series中的,無參,返回一個帶有每個元素出現次數的Series6.【知識點】使用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) + '-' + dayusa_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()轉載于:https://www.cnblogs.com/12345huangchun/p/10420726.html
總結
- 上一篇: React Fiber 原理介绍
- 下一篇: RESTful API 中的 Statu