当前位置:首页 > IT科技

一篇文章带你搞定 Pandas 绘图 API

对于从网页上爬取下来的篇文数据很多很杂乱,我们需要进行数据可视化,章带pandas除了数据处理还可以进行数据可视化展示,搞定这里我们简单说明一下pandas绘制常见图形的绘图一些API:由于现在针对数据可视化有很多库,matplotlib、篇文seaborn、章带pyecharts等等,搞定使用pandas绘图其实并不多,绘图这里做一个简单展示。篇文

目录:

柱状图饼图折线图散点图直方图

柱状图

普通柱图

首先我们打开excel数据文件,章带如下图所示:

Field:专业;Number:对应专业学生数量,搞定根据两列数据绘制简单柱图:

import pandas as pd

import matplotlib.pyplot as plt

data = pd.read_excel(Students.xlsx)

# pd绘图

data.sort_values(by=Number,绘图inplace=True,ascending=False)

data.plot.bar(x=Field,y=Number,title=National Students Field)

plt.tight_layout()

plt.show()

解释说明:

Students.xlsx:对应的数据文件;data.sort_values(by=Number,inplace=True,篇文ascending=False):按照Number数量大小排序,章带inplace = True:在当前数据文件上修改,搞定不生成新的数据文件,ascending = False:降序排序;bar() 绘制柱图的函数,x、y分别指定下,x、y轴的序列;tight_layout() 使得整个图紧凑显示,不然x轴的文字由于太长会被挡住;

结果如下所示:

分组柱图

首先我们还是查看数据文件:students02.xlsx

给出了2016、2017两年的学生数量,由此考虑绘制分组柱状图:

import pandas as pd

import matplotlib.pyplot as plt

data = pd.read_excel(Students02.xlsx)

data.sort_values(by=2017,inplace=True,ascending=False)

data.plot.bar(x=Field,y=[2016,2017],color=[red,orange])

plt.title(National Students Number,fontsize=16,fontweight=bold)

plt.xlabel(Field,fontweight=bold)

plt.ylabel(Number,fontweight=bold)

# x轴刻度偏转

ax = plt.gca()

ax.set_xticklabels(data[Field],rotation=45,ha=right)

print(data)

f = plt.gcf()

f.subplots_adjust(left=0.2,bottom=0.4)

# plt.tight_layout()

plt.show()

解释说明:

bar() 绘制柱图的函数,网站模板x、y分别指定下,x、y轴的序列,但是由于分组柱图y轴不再是一个序列,而是由两个(或多个)序列组成的列表;plt.title() 设置标题,当然也可以在bar() 函数里面设置;plt.gca() 获得x轴的文字,下一列重新设置x轴的文字,并且把文字旋转45°,ha=right:依照右点为中心进行水平对齐;plt.gcf() 拿到绘制的图形对象,设置留白区域,left=0.2(左侧留白20%),bottom=0.4,底部留白40%;

结果如下:

叠加柱图

有的时候可能不只有两组数据,要观察多组数据的数量占比,可以采用叠加柱图:

import matplotlib.pyplot as plt

import pandas as pd

data = pd.read_excel(./excel文件/Users.xlsx) # 这里数据文件就不再展示

data[total] = data[Oct] + data[Nov] + data[Dec]

data.sort_values(by=total,inplace=True,ascending=False)

# data.plot.bar(x=Name,y=[Oct,Nov,Dec],stacked=True,title=Users Behavior) 竖直

data.plot.barh(x=Name,y=[Oct,Nov,Dec],stacked=True,title=Users Behavior) #水平 如果需要改变顺序,将ascending=true

plt.tight_layout()

plt.show()

结果如下图所示:

饼图

首先我们先查看一下数据文件,如下所示:

给出了2016,2017年来自不同国家的学生数量排名(rank);

由此绘制饼图:

import pandas as pd

import matplotlib.pyplot as plt

plt.figure(figsize=(12,8),dpi=100)

students = pd.read_excel(./bin_Students.xlsx, index_col=From)

students[2017].plot.pie(fontsize=8,counterclock=False)

plt.title(Source of International Students, fontsize=16, fontweight=bold)

plt.ylabel(2017, fontsize=12, fontweight=bold)

plt.show()

解释说明:

figsize:设置图片大小,dpi:设置图片分辨率;pie()函数绘制饼图的的api函数,counterclock=False:这个参数设置饼图占比元素的站群服务器环绕方向,false变送逆时针;

结果如下图所示:

折线图

由于文件数据过多,这里不做展示;简言之就是四个区域的不同周期的销售状况

绘图代码:

import pandas as pd

import matplotlib.pyplot as plt

data = pd.read_excel(./excel文件/Orders.xlsx,index_col=Week)

data.plot.area(y=[Accessories,Bikes,Clothing,Components]) #叠加区域图

plt.title(Sale Week Trend,fontsize=14,fontweight=bold)

plt.ylabel(Total,fontsize=10,fontweight=bold)

plt.xticks(data.index,fontsize=5)

plt.show()

结果如下:

由于后面集中图形使用较少,这里不再展示数据文件,直接上代码:

散点图

import matplotlib.pyplot as plt

import pandas as pd

data = pd.read_excel(./excel文件/home_data.xlsx,index_col=id)

data.plot.scatter(x=sqft_living,y=price) # 房子面积 价位

plt.show()

结果如下:

该图形绘制的是在某地区房子价位与房子面积的分布关系;

直方图

import matplotlib.pyplot as plt

import pandas as pd

data = pd.read_excel(./excel文件/home_data.xlsx)

data[sqft_living].plot.hist(bins=60) # bins 表示柱子的数量

plt.xticks(range(0,max(data[sqft_living]),500),rotation=90,fontsize=6)

plt.show()

结果如下:

该图表示某地区房子的价位的分布情况。

总结

以上就是使用pandas结合matplotlib绘制一些基本常用图形的例子,当然了例子是固定的,图形是灵活的,我们还是要根据不同的数据表,结合不同的现实状况,绘制不同的图形达到我们的目的。香港云服务器

分享到:

滇ICP备2023006006号-16