Pandas数据分析实战04
Pandas数据分析实战04
任务目标
统计以下5个国家2010年人口的占比情况:
country_list = [“Afghanistan”,“Albania”,“Arab World”,“Aruba”,“Bangladesh”]
数据准备
population_data.json
链接:https://pan.baidu.com/s/1Ipd-SMhIvp2tATseO1rOYA
提取码:3c3b
代码展示
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 设定文件名称
file_name = "population_data.json"
# 设定文件路径
file_path = "D:\\Coding\\Python\\LogicCoding\\Data Analyze\\"
# 用pandas读取及合并json文件
df_population = pd.read_json(file_path + file_name)
df_population
df_population.info()
# 统计以下5个国家2010年人口的占比情况
country_list = ["Afghanistan","Albania","Arab World","Aruba","Bangladesh"]
# 依次统计各国2010年的人口占比情况
# 方法一,使用布尔索引筛选国家和筛选年份,最后将对应的值添加到列表中
country_population = []
for country in country_list:
df_pop = df_population[(df_population["Country Name"] == country) & (df_population["Year"] == 2010)]
df_pop = df_pop.reset_index()
country_population.append(df_pop.loc[0, "Value"].astype(float))
country_population
# 方法二,用loc()方法实现快速定位
country_population = []
for country in country_list:
df_pop = df_population.loc[(df_population["Country Name"] == country) & (df_population["Year"] == 2010)]
df_pop = df_pop.reset_index()
country_population.append(df_pop.iloc[0, 4].astype(float))
country_population
# 绘制饼图
def draw_pie():
plt.pie(country_population
,labels = country_list # 各个部分的名字(标签)
,labeldistance = 1.1 # 标签到中心点的距离
,autopct = '%.1f%%' # 控制比例的值的显示
,pctdistance = 0.5 # 控制百分比的值的显示位置
,explode = [0,0,0.1,0,0] # 每一份扇形 到中心点的距离
,colors = ['yellow' ,'blue', 'red', 'orange', 'green']
,shadow = True
,startangle = 90 # 绘制图形时候 开始的角度
)
plt.title("各国2010年人口的占比情况")
plt.legend(loc='lower right')
plt.show()
draw_pie()