Python可视化基础:画图小试

一、引言

本文将介绍如何使用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进行数据可视化的库的一些基本操作,这两个库的内容还有很多,不说是九牛一毛,也能说是冰山一角,通过这番学习,相信你也可以初步地将数据转化为直观的图形,从而更好地理解数据背后的信息,最后,希望本文对你有所帮助!

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值