Python数据可视化:Pandas库,只要一行代码就能实现[Python基础]
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
以下文章一级AI入门学习 ,作者小伍哥
刚接触Python的新手、小白,可以复制下面的链接去免费观看Python的基础入门教学视频
https://v.douyu.com/author/y6AZ4jn9jwKW
一,可视化概述
在Python中,常见的数据可视化库有3个:
matplotlib:最常用的库,可以算作可视化的必备技能库,比较复杂,api多,学起来不太容易。
seaborn:是重构于matplotlib基础上,可以满足可视化需求,更特殊的需求还是需要学习matplotlib。
pyecharts:上面的两个库都是静态的可视化库,而pyecharts有很好的网络兼容性,可以做到可视化的动态效果。并且种类也比较丰富。这类这个图,就非常厉害:画图神器pyecharts-旭日图
Pandas:而今天要讲的是Pandas的可视化,Pandas主要作为数据分析的库,虽然没有上述三个库那个强大,但是胜在方便,在数据分析的过程中,只要一行代码就能实现。也非常漂亮。
二,直接看案例
熊猫中,有11个比较常见的图形可视化,还有几个比较进阶的,我们一个一个看看怎么画的
import pandas as pdimport numpy as npdf
= pd.DataFrame(np.random.rand(10, 4), columns=["A","B","C","D"])
01,柱状图-初步
df.plot.bar()
stack = True,画堆叠柱状图
df.plot.bar(stacked=True)
02,柱状图-横向
df.plot.barh()
同样,stacked = True,画堆叠柱状图
df.plot.barh(stacked=True)
03,面积图
df.plot.area(alpha = 0.9)
df.plot.area(stacked=True,alpha = 0.9)
04,密度图-kde
df.plot.kde()
05,密度图-density
df.plot.density()
06,直方图
换个数据集
df = pd.DataFrame({"A": np.random.randn(1000) + 1,"B": np.random.randn(1000),"C": np.random.randn(1000) - 1},columns
=["A", "B", "C"])df.plot.hist(bins
=200)
df.plot.hist(stacked=True, bins=20)
df= pd.DataFrame(np.random.rand(1000, 4), columns=["A","B","C","D"])df.diff().hist(color
="k", alpha=0.7, bins=50)
07,箱盒图
df= pd.DataFrame(np.random.rand(100, 4), columns=["A","B","C","D"])df.plot.box()
vert = False也可以换成横向
df.plot.box(vert=False)
08,散点图
df.plot.scatter(x="A",y="B")
09,蜂巢图
df = pd.DataFrame(np.random.randn(1000, 2), columns=["a", "b"])df[
"b"] = df["b"] + np.arange(1000)df.plot.hexbin(x
="a", y="b", gridsize=25)
07,饼图
series = pd.Series(3 * np.random.rand(4), index=["a", "b", "c", "d"], name="series")series.plot.pie(figsize
=(6, 6))
series.plot.pie(labels=["AA", "BB", "CC", "DD"], colors=["r", "g", "b", "c"],autopct="%.2f", fontsize=20, figsize=(6, 6))
08,矩阵散点图
from pandas.plotting import scatter_matrixdf
= pd.DataFrame(np.random.randn(1000, 4), columns=["a", "b", "c", "d"])scatter_matrix(df, alpha
=0.2, figsize=(6, 6), diagonal="kde")
09,安德鲁斯曲线
data = pd.read_csv("C:/Users/wuzhengxiang/Desktop/iris.csv")pd.plotting.andrews_curves(data ,
"Name")
andrews_curves(data, "Name", colormap="winter")
10,平行坐标图该图也是使用自己加载的iris数据集
from pandas.plotting import parallel_coordinatesparallel_coordinates(data,
"Name", colormap="gist_rainbow")
11,滞后图
from pandas.plotting import lag_plotdf
= pd.Series(0.1 * np.random.rand(1000) +0.9 * np.sin(np.linspace(-99 * np.pi, 99 * np.pi, num=1000)))
lag_plot(df)
12,最大值函数图
直接画图,预设为折线图
df= pd.DataFrame(np.random.rand(12, 4), columns=["A","B","C","D"])df.plot()
df.plot(subplots=True,layout=(2, 2), figsize=(15, 8))
df= pd.DataFrame(np.random.rand(1000, 4), columns=["A","B","C","D"])df.plot()
df.plot(subplots=True,layout=(2, 2), figsize=(15, 8))
13,bootstrap_plot
s = pd.Series(np.random.uniform(size=100))pd.plotting.bootstrap_plot(s)
三,参数详解
1,官方文档
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.htmlhttps:
//pandas.pydata.org/pandas-docs/version/0.18.1/visualization.html
2,参数介绍
DataFrame.plot(x=None, y=None, kind="line", ax=None, subplots=False,sharex
=None, sharey=False, layout=None, figsize=None, use_index=True,title
=None, grid=None, legend=True, style=None, logx=False, logy=False,loglog
=False, xticks=None, yticks=None, xlim=None, ylim=None, rot=None,fontsize
=None, colormap=None, position=0.5, table=False, yerr=None,xerr
=None, stacked=True/False, sort_columns=False, secondary_y=False,mark_right
=True, **kwds)
注意:每种绘图类型都有相对应的方法:df.plot(kind = "line" )与df.plot.line()等价
x:标签或位置,默认为None#指数据列的标签或位置参数
y:标签,位置或标签列表,位置,默认值无
种类:str#绘图类型
"line":线图(默认)#折线图
"bar":垂直条形图。条形图。stacked为True时为堆叠的柱状图
"barh":水平条形图
"hist":histogram#直方图(数值频率分布)
"box":boxplot#箱型图
"kde":内核密度估计图#密度图,主要对柱状图添加内核概率密度线
"密度":与"kde"相同
"area":area plot#与x轴所围的区域图(面积图)。Stacked= True时,每列必须全部为正或负值,stacked = False时,对数据没有要求
"pie":pie plot#饼图。数值必须为正值,需指定Y轴或者subplots = True
"scatter":散点图#散点图。需指定X轴Y轴
"hexbin":hexbin图#蜂巢图。需指定X轴Y轴
"hexbin":hexbin图#蜂巢图。需指定X轴Y轴
ax:matplotlib轴对象,默认值None#**子图(axes,也可以理解成坐标轴)要在其上进行交易的matplotlib子图对象。如果没有设置,则使用当前matplotlib子图**其中,变量和函数通过改变figure和axes中的元素(例如:title,label,点和线等等)一起描述figure和axes,也就是在画布上绘图。
子图:布尔值,默认为False#是否对列分别作子图
sharex:布尔值,默认值为true,如果ax为None False#如果ax为None,则设为为True,否则为False
如果subplots = True,则共享x轴并将一些x轴标签设置为不可见;如果ax为None则默认为True,否则为False。请注意,同时传递ax和sharex = True将更改图形中所有轴的所有x轴标签!
sharey:布尔值,默认为False#如果有子图,子图共y轴刻度,标签
如果subplots = True,则共享y轴并将一些y轴标签设置为不可见
layout:用于子图的元组(行,列)#子图的行列布局
figsize:以英寸为单位的元组(宽度,高度)
use_index:布尔值,默认为True
title:字符串#图片的标题用字符串
地块标题
grid:布尔值,默认值None#图片是否有网格
legend:False / True /"reverse"#子图的图例(交替为True)
样式:列表或字典#对每列折线图设置线的类型
logx:布尔值,默认为False。
类型:布尔值,默认为False
loglog:布尔值,默认为False#同时设置x,y轴刻度是否取对数
xticks:sequence#设置x轴刻度值,序列形式(某些列表)
yticks:sequence#设置y轴刻度,序列形式(几种列表)
xlim:float / 2-tuple / list#设置坐标轴的范围。数值(变量),列表或元组(区间范围)
ylim:浮点数/ 2元组/列表
rot:int,默认值None#设置轴标签(轴刻度)的显示旋转度数
fontsize:int,默认值None#设置轴刻度的字体大小
colormap:str或matplotlib colormap对象,默认值为None。
colorbar:布尔值,可选#柱子颜色
如果为True,则绘制颜色条(仅与“散布”图和“六边形”图有关)
position:float#条形图的对齐方式,取值范围[0,1],即左下端到右上端替换0.5(中间对齐)
layout:tuple(可选)#布局。layout=(2,3)两行三列,layout =(2,-1)两行自适应列数
例如。df.plot(subplots = True,layout =(2,-1),sharex = False)
table:布尔值,Series或DataFrame,默认为False#图下添加表。如果为True,则使用DataFrame中的数据图表,并且数据将被旋转放置到matplotlib的布局。。
yer:DataFrame,Series,类数组,dict和str
有关详细信息,请参见使用误差线绘图。
xerr:与yerr相同的类型。
堆叠:布尔值,线形图和条形图默认为False,面积图为True。如果为True,则创建堆积图。#前面有介绍
sort_columns:布尔值,默认值为False。
secondary_y:布尔值或序列,默认为False#设置第二个y轴(右辅助y轴)
是否在次要y轴上绘制如果是 列表/元组,则在次要y轴上绘制哪些列
mark_right:布尔值,默认为True
以上是 Python数据可视化:Pandas库,只要一行代码就能实现[Python基础] 的全部内容, 来源链接: utcz.com/z/530898.html