【Matplotlib, Numpy, Pandas 学习笔记】

本文详细介绍了Python数据分析领域的重要库——Matplotlib, Numpy和Pandas的使用。从Matplotlib的绘图技巧,如plot、scatter和bar图,到Numpy的数组操作,再到Pandas的数据清洗和处理,涵盖了数据可视化工具有色条、网格线和饼图,以及数据处理的多种方法,如dropna、fillna和groupby。此外,还讲解了如何读写CSV、Excel和JSON数据,以及如何进行特征工程。" 114801591,10326150,Appium模拟器自动化测试:环境配置与脚本编写,"['appium测试', '自动化测试框架', '移动开发', '安卓自动化', 'Java测试']
摘要由CSDN通过智能技术生成

学习Matplotlib, Numpy, Panadas 的自我记录。

目录概览

Matplotlib

Matplotlib Pyplot

使用 import 导入 pyplot 库,并设置一个别名 plt:

import matplotlib.pyplot as plt

plot()

syntax:

# 画单条线
plot([x], y, [fmt], *, data=None, **kwargs)
# 画多条线
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

参数说明:
x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。
fmt:可选,定义基本格式(如颜色、标记和线条样式)。
**kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。

颜色字符:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’ 青绿色,‘#008000’ RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。

线型参数:‘‐’ 实线,‘‐‐’ 破折线,‘‐.’ 点划线,‘:’ 虚线。
标记字符:‘.’ 点标记,‘,’ 像素标记(极小点),‘o’ 实心圈标记,‘v’ 倒三角标记,‘^’ 上三角标记,‘>’ 右三角标记,‘<’ 左三角标记…等等。

画单条线:

import matplotlib.pyplot as plt
import numpy as np

xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

plt.plot(xpoints, ypoints)
plt.show()

请添加图片描述

画多条线:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,4*np.pi,0.1)   # start,stop,step
y = np.sin(x)
z = np.cos(x)
plt.plot(x,y,x,z)
plt.show()

请添加图片描述


Marker 标记

坐标自定义一些不一样的标记,可以使用 plot() 方法的 marker 参数来定义:

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([1,3,4,5,8,9,6,1,3,4,5,2,4])

plt.plot(ypoints, marker = 'o')
plt.show()

请添加图片描述

标记大小与颜色:

markersize,简写为 ms:定义标记的大小。
markerfacecolor,简写为 mfc:定义标记内部的颜色。
markeredgecolor,简写为 mec:定义标记边框的颜色。

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([6, 2, 13, 10])
plt.plot(ypoints, marker = 'o', ms = 20, mec = '#4CAF50', mfc = '#4CAF50')
plt.show()

请添加图片描述


linestyle 自定义线的样式,包括线的类型、颜色和大小等

线的类型可以使用 linestyle 参数来定义,简写为 ls:

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([6, 2, 13, 10])

plt.plot(ypoints, linestyle = 'dashed')
plt.show()

请添加图片描述

线的颜色可以使用 color 参数来定义,简写为 c:

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([6, 2, 13, 10])

plt.plot(ypoints, c = 'SeaGreen')
plt.show()

请添加图片描述

线的宽度可以使用 linewidth 参数来定义,简写为 lw,值可以是浮点数

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([6, 2, 13, 10])

plt.plot(ypoints, linewidth = '5.5')
plt.show()

请添加图片描述


label 轴标签和标题

使用 xlabel() 和 ylabel() 方法来设置 x 轴和 y 轴的标签
使用 title() 方法来设置标题

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)

plt.title("RUNOOB TEST TITLE")
plt.xlabel("x - label")
plt.ylabel("y - label")

plt.show()

请添加图片描述


grid 网格线

使用 pyplot 中的 grid() 方法来设置图表中的网格线
syntax:

matplotlib.pyplot.grid(b=None, which='major', axis='both', )

参数说明:
b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true。

which:可选,可选值有 ‘major’、‘minor’ 和 ‘both’,默认为 ‘major’,表示应用更改的网格线。

axis:可选,设置显示哪个方向的网格线,可以是取 ‘both’(默认),‘x’ 或 ‘y’,分别表示两个方向,x 轴方向或 y 轴方向。

**kwargs:可选,设置网格样式,可以是 color=‘r’, linestyle=‘-’ 和 linewidth=2,分别表示网格线的颜色,样式和宽度。

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])


plt.title("RUNOOB grid() Test")
plt.xlabel("x - label")
plt.ylabel("y - label")

plt.plot(x, y)

plt.grid() 
# plt.grid(color = 'r', linestyle = '--', linewidth = 0.5) 做装饰

plt.show()

请添加图片描述

legend

# Show legend
plt.plot(days, max_t, label="max")
plt.plot(days, min_t, label="min")
plt.plot(days, avg_t, label="average")

plt.legend(loc='best')
# plt.legend(loc='upper right',shadow=True,fontsize='large')
# plt.legend(loc='upper right', fontsize="large", shadow=True)

请添加图片描述

subplot() 绘制多图

使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图; subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可

syntax:

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)
matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
import matplotlib.pyplot as plt
import numpy as np

#plot 1:
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

plt.subplot(1, 2, 1) # 1 row, 2 columns, 1st subplot
plt.plot(xpoints,ypoints)
plt.title("plot 1")

#plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(1, 2, 2) # 1 row, 2 columns, 2nd subplot
plt.plot(x,y)
plt.title("plot 2")

plt.suptitle("RUNOOB subplot Test")
plt.show()

请添加图片描述

scatter 散点图

使用 pyplot 中的 scatter() 方法来绘制散点图:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
# sizes = np.array([20,50,100,200,500,1000,60,90]) 设置图标大小
# colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"]) 自定义点的颜色

plt.scatter(x, y)
plt.show()

请添加图片描述

颜色条 Colormap

使用 plt.colorbar() 方法:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis') # 换个颜色条参数, cmap 设置为 afmhot_r

plt.colorbar()

plt.show()

请添加图片描述


barchart 柱形图

使用 pyplot 中的 bar() 方法来绘制柱形图:
syntax:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

参数说明:
x:浮点型数组,柱形图的 x 轴数据。
height:浮点型数组,柱形图的高度。
width:浮点型数组,柱形图的宽度。
bottom:浮点型数组,底座的 y 坐标,默认 0。
align:柱形图与 x 坐标的对齐方式,‘center’ 以 x 位置为中心,这是默认值。 ‘edge’:将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align=‘edge’。
**kwargs::其他参数。

import matplotlib.pyplot as plt
import numpy as np

x = np.array(['Runoob-1', 'Runoob-2', 'Runoob-3', 'Runoob-4'])
y = np.array([20, 14, 23, 17])

plt.bar(x, y, align='center', color='green', alpha=0.5)
plt.show()

请添加图片描述

Horizontal Bars

垂直方向的柱形图可以使用 barh() 方法来设置:

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "Runoob-4"])
y = np.array([12, 22, 6, 18])

plt.barh(x, y, height = 0.1)
plt.show()

请添加图片描述

Multiple Bars

plt.bar(xpos-0.2,revenue, width=0.4, label="Revenue")
plt.bar(xpos+0.2,profit, width=0.4,label="Profit")

plt.xticks(xpos,company)
plt.ylabel("Revenue(Bln)")
plt.title('US Technology Stocks')
plt.legend()

请添加图片描述


Pie 饼图

使用 pyplot 中的 pie() 方法来绘制饼图:
syntax:

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]
import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y)
plt.show() 

请添加图片描述

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y,
        labels=['A','B','C','D'], # 设置饼图标签
        colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色
       )
plt.title("RUNOOB Pie Test") # 设置标题
plt.show()

请添加图片描述

突出显示第二个扇形,并格式化输出百分比:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y,
        labels=['A','B','C','D'],
        colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"],
        explode=(0, 0.2, 0, 0), # 第二部分突出显示,值越大,距离中心越远
        autopct='%.2f%%', # 输出百分比
       )
plt.title("RUNOOB Pie Test")
plt.show()

请添加图片描述

histograms 直方图

在直方图中,X轴包含一个变量,Y轴将是该变量的频率:

plt.xlabel("Sugar Level")
plt.ylabel("Number Of Patients")
plt.title("Blood Sugar Chart")

plt.hist(blood_sugar, bins=[80,100,125,150], rwidth=0.95, color='g')

请添加图片描述

Multiple

plt.xlabel("Sugar Level")
plt.ylabel("Number Of Patients")
plt.title("Blood Sugar Chart")

blood_sugar_men = [113, 85, 90, 150, 149, 88, 93, 115, 135, 80, 77, 82, 129]
blood_sugar_women = [67, 98, 89, 120, 133, 150, 84, 69, 89, 79, 120, 112, 100]

plt.hist([blood_sugar_men,blood_sugar_women], bins=[80,100,125,150], rwidth=0.95, color=['green','orange'],label=['men','women'])
plt.legend() # 右上角的标签

请添加图片描述

Horizontal

横向,orientation=‘horizontal’:

plt.xlabel("Number Of Patients")
plt.ylabel("Sugar Level")
plt.title("Blood Sugar Chart")

plt.hist(blood_sugar, bins=[80,100,125,150], rwidth=0.95, orientation='horizontal') # 横向

请添加图片描述


Numpy

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

NumPy 数据类型

numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型。比如bool, int, int16, int32, float16, float32, float64, complex。

NumPy 数组属性

NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。
每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。

声明 axis:axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。

ndarray.ndim

ndarray.ndim 用于返回数组的维数,等于rank

import numpy as np 
 
a = np.arange(24)  
print (a.ndim) # one d

b = a.reshape(2,4,3)  # three d
print (b.ndim)

# return
1
3

ndarray.shape

ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。比如,一个二维数组,其维度表示"行数"和"列数"。
ndarray.shape 也可以用于调整数组大小。

import numpy as np 
 
a = np.array([[1,2,3],[4,5,6]]) 
a.shape =  (3,2)  
print (a)
import numpy as np 
 
a = np.array([[1,2,3],[4,5,6]]) 
b = a.reshape(3,2)  
print (b)

# return
[[1, 2] 
 [3, 4] 
 [5, 6]]

创建数组

numpy.empty/ones/zeros(shape, dtype = float, order = ‘C’)

import numpy as np
 
# 默认为浮点数
x = np.zeros(5) 
print(x)
 
# 设置类型为整数
y = np.zeros((5,), dtype = int) 
print(y)
 
# 自定义类型
z = np.zeros((2,2), dtype = [('x', 'i4'), ('y', 'i4')])  
print(z)

# return
[0. 0. 0. 0. 0.]
[0 0 0 0 0]
[[(0, 0) (0, 0)]
 [(0, 0) (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值