一、引言
本文将介绍如何使用Python进行数据可视化一些常用的数据可视化库。通过学习这些库,你可以轻松地将数据转化为直观的图形,从而更好地理解数据背后的信息,俗话说:“千言不如一图”,可视化的信息呈现除了可以帮助接收者更好地理解信息之外,还可以让受众迅速识别和捕捉内容的核心重点以及脉络层次。同时,美观的视觉化界面也能够增加人们对内容的兴趣和接受度。
二、相关的库
在当今的数据驱动世界中,数据可视化已经成为了一个非常重要的技能。它可以帮助我们更好地理解数据,发现数据中的规律和趋势。Python作为一个强大的编程语言,提供了丰富的数据可视化库,如pandas、Matplotlib等。本文将介绍这两个库的基础画图功能。
1. pandas
(1)介绍
Pandas 是 Python的核心数据分析支持库,提供了一系列高性能且易于使用的数据结构和数据分析工具,他能够更简单、更直观地处理一些数据,比如关系型数据、标记型数据等,在数据分析领域应用广泛。
(2)例子
这里列举它的几个主要功能:
[1]导入数据
用pandas导入外部数据,这里以.csv文件为例:
注意:导入外部数据的时候记得输入清楚路径!
(我这里因为代码和文件在同一个文件夹下,所以不用输路径)
#导入模块
import pandas as pd
#导入.csv文件
data = pd.read_csv(r'xxxx.csv',sep=',',encoding='gbk')
# xxxx代表你要导入的文件名,记得带后缀!
比如我本地的文件导入数据:
实际pandas能导入的数据类型多得很,如下图:
[2]绘图
pandas是有绘图功能的,能画出来的图形种类繁多,但在画图之前,简单了解一下几个概念:
-
利用pandas库从尾部读取到Python中形成的表格叫做DataFrame表格对象
-
Series序列对象即DataFrame表格对象的某一列数据
-
Series序列对象简称序列对象,其数据类型是Series
实际上,序列对象是可以手动生成的,代码如下:
#手动生成一个Series ,也可以叫序列对象
s=pd.Series(['a','b','c','d'])
print(s)
结果
关于这两个概念这里不多啰嗦,下面开始画图,选举三个例子,折线图、饼图和条形图:
折线图:
import pandas as pd
# 创建数据列表
data = [1, 3, 2, 5, 4, 7, 6, 8, 9, 10]
# 将数据列表转换为Series对象
series = pd.Series(data)
# 绘制折线图并显示结果
# 括号可以指定图表类型,留空默认生成直线图
series.plot()
print(series.plot())
结果:
饼图:
#在上面折线图代码中,替换为下述语句
series.plot.pie()
结果:
条形图:
#在上面折线图代码中,替换为下述语句
series.plot.bar()
结果:
[3]补充
其余部分图:
密度图:.density() 水平条形图:.barh()
箱型图:.box() 直方图:.hist()
2. Matplotlib
(1).介绍
Matplotlib是Python中最常用的数据可视化库之一,它提供了一系列的绘图函数,可以绘制各种类型的图形,如折线图、散点图、柱状图、饼图等。对于同样有画图功能的pandas来说,Matplotlib在细节上补充了更多
Matplotlib库用绘图函数plot绘图的语法如下:
[1].语法及参数
plt.plot(x, y, color, linestyle, marker, format_string, ...)
参数 作用
x X轴数据,传入参数值时不要写参数名x
y Y轴数据,传入参数值时不要写参数名y
color 图形颜色,接收颜色英文名、颜色英文名首字母、十六进制颜色代码等
linestyle 线条样式, '-'是实线, '--'是虚线,…
marker 点的样式, '*'是星号,'o'是圆点,…
format_string 可以通过一串字符控制图形样式,如'r--o'表示红色、虚线、圆点
[2].画布及其参数
画布类似画画时的画板,决定了我们的图形的大小,默认的画布为白色,看不见其边界。
语法: plot.figure(figsize,….)
figsize:接收元组(a,b),a表示画布的长,b表示画布的高
plt.figure(figsize=(6,2))
plt.plot([1,2],[1,3]
结果:
参数:
函数名 传入参数及其作用
plt.xlabel() 传入一个字符串,表示x轴的名称(标签)
plt.ylabel() 传入一个字符串,表示y轴的名称(标签)
plt.xticks() 传入一个列表,表示x轴的各个刻度的值(刻度为类别型数据时使用)
plt.yticks() 传入一个列表,表示y轴的各个刻度的值(刻度为类别型数据时使用)
plt.xlim() 传入一个列表或是两个数,表示x轴的取值范围(刻度为数字型数据时使用)
plt.ylim() 传入一个列表或是两个数,表示y轴的取值范围(刻度为数字型数据时使用)
plt.grid() 不需要传入参数,使直角坐标系显示网格
显示标题语法: plot.title(‘标题’)
显示图例语法: plot.legend(‘数据标签’,loc,fontsize,.….).
loc的作用:决定图例的位置,也就是可以决定每张图再画布中的位置
(2)例子
[1]单图绘制
以下是一个简单的Matplotlib示例:
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimHei'#解决中文乱码
# 手动创建一个Series对象
data = [1, 4, 2, 7, 9]
index = ['a', 'b', 'c', 'd', 'e']
series = pd.Series(data, index=index)
# 绘制折线图
plt.plot(series)
plt.xlabel('索引')
plt.ylabel('值')
plt.title('折线图示例')
plt.show()
结果:
可以很明显的看出,Matplotlib在制图细节上的有所补充;对比起前面pandas画的图,;理解起来也更方便了些。
[2]绘制多图
接下来演示一下如何绘制多张图,
概念图如下:
根据图片可以理解的出来,绘图之前要新建一个画布来“装”’你画出来的图。
添加子图的逻辑:
子图区域选择函数: plt.subplot( x , y ,z)
执行后会在画布中选定一个区域,由参数xyz决定
x,y:表示将画布对象划分为x行y列,共x*y 个区域。
(解释一下,比如下图 plt.subplot(2,2,1) 中的2,2,1,意思是将画布分为2x2=4分,按照从左到右,从上到下的顺序,所以是左上角,也就是第一个)
z表示在上述的x*y个区域中的第z个(从左到右,从上到下) 区域上画图。
先上代码:
plt.figure(figsize=(8,4))
plt.subplot(2,2,1)
plt.subplot(2,2,2)
plt.subplot(2,2,3)
plt.subplot(2,2,4)
plt.show()
如图,我们将画布变成了2x2的排列形式,开始画图:
plt.figure(figsize=(8,4))
#图1
plt.subplot(2,2,1)
plt.scatter([1,2,3,4],[1,2,3,4])
#图2
plt.subplot(2,2,2)
plt.plot([1,2,3,4],[1,2,3,4])
#图3
plt.subplot(2,2,3)
plt.bar([1,2,3,4],[1,2,3,4])
#图4
plt.subplot(2,2,4)
plt.barh([1,2,3,4],[1,2,3,4])
plt.show()
上结果:
总结:
本文介绍了两个Python进行数据可视化的库的一些基本操作,这两个库的内容还有很多,不说是九牛一毛,也能说是冰山一角,通过这番学习,相信你也可以初步地将数据转化为直观的图形,从而更好地理解数据背后的信息,最后,希望本文对你有所帮助!