- 需求:
- 匯入檔案,檢視原始資料
- 將人口資料和各州簡稱資料進行合併
- 將合併的資料中重複的abbreviation列進行刪除
- 檢視存在缺失資料的列
- 找到有哪些state/region使得state的值為nan,進行去重操作
- 為找到的這些state/region的state項補上正確的值,從而去除掉state這一列的所有nan
- 合併各州面積資料areas
- 我們會發現area(sq.mi)這一列有缺失資料,找出是哪些行
- 去除含有缺失資料的行
- 找出2023年的全民人口資料
- 計算各州的人口密度
- 排序,並找出人口密度最高的州
import numpy as np
import pandas as pd
from pandas import dataframe
#匯入檔案,檢視原始資料
abb = pd.read_csv(
'./data/state-abbrevs.csv'
)#state(州的全稱)abbreviation(州的簡稱)
area = pd.read_csv(
'./data/state-areas.csv'
)#state州的全稱,area (sq. mi)州的面積
pop = pd.read_csv(
'./data/state-population.csv'
)#state/region簡稱,ages年齡,year時間,population人口數量
#將人口資料和各州簡稱資料進行合併
abb_pop = pd.merge(abb,pop,left_on=
'abbreviation'
,right_on=
'state/region'
,how=
'outer'
)abb_pop.head(
)#將合併的資料中重複的abbreviation列進行刪除
abb_pop.drop(labels=
'abbreviation'
,axis=
1,inplace=
true
)abb_pop.head(
)#檢視存在缺失資料的列
#方式1:isnull,notll,any,all
abb_pop.isnull().
any(axis=0)
#state,population這兩列中是存在空值
#方式2:
abb_pop.info(
)#找到有哪些state/region使得state的值為nan,進行去重操作(將state中的空值對應的簡稱找到,且對簡稱進行去重)
abb_pop.head(
)#思路:可以將state這一列中的空值對應的行資料取出,從該行資料中就可以取出簡稱的值
#1.將state中的空值定位到
abb_pop[
'state'
].isnull(
)#2.將上述的布林值作為源資料的行索引
abb_pop.loc[abb_pop[
'state'
].isnull()]
#將state中空對應的行資料取出
#3.將簡稱取出
abb_pop.loc[abb_pop[
'state'
].isnull()]
['state/region'
]#4.對簡稱去重
abb_pop.loc[abb_pop[
'state'
].isnull()]
['state/region'
].unique(
)#結論:只有pr和usa對應的全稱資料為空值
#為找到的這些state/region的state項補上正確的值,從而去除掉state這一列的所有nan
#思考:填充該需求中的空值可不可以使用fillna?
# - 不可以。fillna可以使用空的緊鄰值做填充。fillna(value='***')使用指定的值填充空值
# 使用給元素賦值的方式進行填充!
#1.先給usa的全稱對應的空值進行批量賦值
#1.1將usa對應的行資料找出(行資料中就存在state的空值)
abb_pop[
'state/region']==
'usa'
abb_pop.loc[abb_pop[
'state/region']==
'usa'
]#將usa對應的行資料取出
#1.2將usa對應的全稱空對應的行索引取出
indexs = abb_pop.loc[abb_pop[
'state/region']==
'usa'
].index
abb_pop.iloc[indexs]
abb_pop.loc[indexs,
'state']=
'united states'
#2.可以將pr的全稱進行賦值
abb_pop[
'state/region']==
'pr'
abb_pop.loc[abb_pop[
'state/region']==
'pr'
]#pr對應的行資料
indexs = abb_pop.loc[abb_pop[
'state/region']==
'pr'
].index
abb_pop.loc[indexs,
'state']=
'ppprrr'
#合併各州面積資料areas
abb_pop_area = pd.merge(abb_pop,area,how=
'outer'
)#我們會發現area(sq.mi)這一列有缺失資料,找出是哪些行
abb_pop_area[
'area (sq. mi)'
].isnull(
)abb_pop_area.loc[abb_pop_area[
'area (sq. mi)'
].isnull()]
#空對應的行資料
indexs = abb_pop_area.loc[abb_pop_area[
'area (sq. mi)'
].isnull()]
.index
#去除含有缺失資料的行
abb_pop_area.drop(labels=indexs,axis=
0,inplace=
true
)#找出2023年的全民人口資料(基於df做條件查詢)
abb_pop_area.query(
'ages == "total" & year == 2010'
)#計算各州的人口密度(人口除以面積)
abb_pop_area[
'midu'
]= abb_pop_area[
'population'
]/ abb_pop_area[
'area (sq. mi)'
]abb_pop_area
#排序,並找出人口密度最高的州
abb_pop_area.sort_values(by=
'midu'
,axis=
0,ascending=
false
).iloc[0]
['state'
]
資料分析之分析美國人口
資料 需求 匯入檔案,檢視原始資料 將人口資料和各州簡稱資料進行合併 將合併的資料中重複的abbreviation列進行刪除 檢視存在缺失資料的列 找到有哪些state region使得state的值為nan,進行去重操作 為找到的這些state region的state項補上正確的值,從而去除掉s...
美國各州人口資料分析
需求 匯入檔案,檢視原始資料 將人口資料和各州簡稱資料進行合併 將合併的資料中重複的abbreviation列進行刪除 檢視存在缺失資料的列 找到有哪些state region使得state的值為nan,進行去重操作 為找到的這些state region的state項補上正確的值,從而去除掉stat...
Python資料分析 6
3.資料處理 清洗 f open 商鋪資料.csv if 條 in s return int s.split 0 else return 缺失資料 def fprice s if in s return float s.split 1 else return 缺失資料 def fcommentl s...