【Python】Pandas+Seaborn应用之简单数据整理+横向条形图

先看一下数据和期望使的结果:

在这里插入图片描述
在这里插入图片描述
数据主要是各国新冠病毒每日确诊、死亡和康复的人数统计。第一张图需要找出感染总人数前20名的国家并画出相应的横向条形图;第二张图需要画出感染总人数前5国家的感染数和康复数的条形图。涉及的pandas操作主要是数据读取、分组求和、按指定列排序、数据选取切片;涉及的seaborn(部分matplotlib)的操作主要是画条形图、写数字注释、画图例。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import seaborn as sns
df = pd.read_csv("df.csv")#读入数据
data = df.groupby("Country_Region").sum().reset_index()#分组求和
data = data.sort_values("Confirmed",ascending=False)#按"Confirmed"列降序
data = data.reindex(columns=["Country_Region","Confirmed","Recovered"])#选择之后画图用到的列
data1 = data[0:20]#选择前20行
Country1 = list(data1["Country_Region"])
Confirmed1 = list(data1["Confirmed"])
Rcovered1 = list(data1["Recovered"])#转换成列表
plt.figure(figsize=(12, 12))#画布
plt.xlabel('Confirmed')#行标签
plt.ylabel('Country')#列标签
g1 = sns.barplot(x=Confirmed1, y=Country1,ci=67,orient="h")#画条形图,orient="h"表示横向条形图
for i in range(len(Confirmed1)):    
    g1.text(Confirmed1[i],i,(lambda x:format(x,','))(Confirmed1[i]),color="black",ha="left")#添加数字标注,注意用lambda函数加千分位符
plt.show()
data2 = data[0:5]#选择前5行
Country2 = list(data2["Country_Region"])
Confirmed2 = list(data2["Confirmed"])
Rcovered2 = list(data2["Recovered"])#转化成列表
plt.figure(figsize=(16, 5))#画布
plt.xlabel('Country')#行标签
plt.ylabel('Rcovered')#列标签
g2_1 = sns.barplot(x=Confirmed2,y=Country2,ci=67,orient="h",color="r")
g2_2 = sns.barplot(x=Rcovered2, y=Country2,ci=67,orient="h",color="g")
red_patch = mpatches.Patch(color='r', label='Confirmed')
green_patch = mpatches.Patch(color='g', label='Rcovered')#设置图例文字和格式
legend = plt.legend(handles=[red_patch,green_patch])#画图例
for i in range(len(Confirmed2)):    
    g2_1.text(Confirmed2[i],i,(lambda x:format(x,','))(Confirmed2[i]),color="black",ha="left")
    g2_2.text(Rcovered2[i],i,(lambda x:format(x,','))(Rcovered2[i]),color="black",ha="left")#添加数字标注
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值