Python的四种常用库 Numpy、pandas、PIL 、Matplotlib

Python的四种常用库

Python被大量应用在数据挖掘和深度学习领域,其中使用极其广泛的是Numpy、pandas、Matplotlib、PIL等库。

numpy是Python科学计算库的基础。包含了强大的N维数组对象和向量运算。

pandas是建立在numpy基础上的高效数据分析处理库,是Python的重要数据分析库。

Matplotlib是一个主要用于绘制二维图形的Python库。用途:绘图、可视化

PIL库是一个具有强大图像处理能力的第三方库。用途:图像处理

1. Numpy库

1.数组创建

可以使用array函数从常规Python列表或元组中创建数组。得到的数组的类型是从Python列表中元素的类型推导出来的。

创建数组最简单的办法就是使用array函数。它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的numpy数组。其中,嵌套序列(比如由一组等长列表组成的列表)将会被转换为一个多维数组

import numpy as np

#将列表转换为数组
array = np.array([[1,2,3],
                 [4,5,6]])
print(array)
[[1 2 3]
 [4 5 6]]

2.建立一个几行几列的数组

import numpy as np
array= np.zeros((2,3))
print(array)
[[0. 0. 0.]
 [0. 0. 0.]]

3.重新排列

array = np.array([[1,2,3],[2,2,2]],dtype='int64').reshape([3,2])

print(array)
[[1 2]
 [3 2]
 [2 2]]

2. pandas库

1.Series

Series是一种类似于一维数组的对象,它由一维数组(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成.

可理解为带标签的一维数组,可存储整数、浮点数、字符串、Python 对象等类型的数据。

import pandas as pd
i=pd.series(['a','b','c','d','e'])
print(i)
0    a
1    b
2    c
3    d
4    e
dtype: object

自己设置索引(索引可以重复)

import pandas as pd
i=pd.Series(['a','b','c','d','e'],index=[12,2,12,13,13])
print(i)
12    a
2     b
12    c
13    d
13    e
dtype: object

查看列表数值和索引

import pandas as pd 
s=pd.Series(['a','b','c','d','e','f'],index=[100,200,300,400,500,600])
print(s)
print(s.values)
print(s.index)
100    a
200    b
300    c
400    d
500    e
600    f
dtype: object
['a' 'b' 'c' 'd' 'e' 'f']
Int64Index([100, 200, 300, 400, 500, 600], dtype='int64')

索引S中的值

import pandas as pd
s= pd.Series(['a','b','c','d','e','f'],index=[100,200,300,400,500,600])
print(s[100])
print(s[400,500,600])
a
import numpy as np
import pandas as pd
s = pd.Series(np.array([1,2,3,4,5]),index=[100,200,300,400,500])
print(s)
print(s+s)
print(s*2)
100    1
200    2
300    3
400    4
500    5
dtype: int64
100     2
200     4
300     6
400     8
500    10
dtype: int64
100     2
200     4
300     6
400     8
500    10
dtype: int64

Series中最重要的一个功能是:它会在算术运算中自动对齐不同索引的数据

Series 和多维数组的主要区别在于, Series 之间的操作会自动基于标签对齐数据。因此,不用顾及执行计算操作的 Series 是否有相同的标签。

import numpy as np
import pandas as pd
lest1=pd.Series({'liu':60,'lin':70,'chen':80,'bo':90,'zhe':1000})
print(lest1)
lest2=pd.Series({'ss':None,'lin':60,'chen':80,'bo':90,'zhe':1000,'bb':600})
print(lest1+lest2)
print(lest1[1:]+lest2[:-1])
liu       60
lin       70
chen      80
bo        90
zhe     1000
dtype: int64
bb         NaN
bo       180.0
chen     160.0
lin      130.0
liu        NaN
ss         NaN
zhe     2000.0
dtype: float64

2.DataFrame

  • DataFrame是一个表格型的数据结构,类似于Excel或sql表

  • 它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)

  • DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)

import pandas as pd
import numpy as np
list ={'name':['liu','lin','boning','zheyu','chen'],'sex':['boy','boy','boy','boy','boy'],'age':[18,18,18,18,18]}
man= pd.DataFrame(list,index=[1,2,3,4,5])
print(man)
     name  sex  age
1     liu  boy   18
2     lin  boy   18
3  boning  boy   18
4   zheyu  boy   18
5    chen  boy   18

1.改变纵列顺序和添加纵列

import pandas as pd
import numpy as np
list ={'name':['liu','lin','boning','zheyu','chen'],'sex':['boy','boy','boy','boy','boy'],'age':[18,18,18,18,18]}
man= pd.DataFrame(list,index=[1,2,3,4,5],columns=['sex','name','age','weigh'])
print(man)
 sex    name  age weigh
1  boy     liu   18   NaN
2  boy     lin   18   NaN
3  boy  boning   18   NaN
4  boy   zheyu   18   NaN
5  boy    chen   18   NaN

2.赋值

import pandas as pd
import numpy as np
list ={'name':['liu','lin','boning','zheyu','chen'],'sex':['boy','boy','boy','boy','boy'],'age':[18,18,18,18,18]}
man= pd.DataFrame(list,index=[1,2,3,4,5],columns=['sex','name','age','weigh'])
print(man)
man['weigh']=50
print(man)
 sex    name  age weigh
1  boy     liu   18   NaN
2  boy     lin   18   NaN
3  boy  boning   18   NaN
4  boy   zheyu   18   NaN
5  boy    chen   18   NaN
   sex    name  age  weigh
1  boy     liu   18     50
2  boy     lin   18     50
3  boy  boning   18     50
4  boy   zheyu   18     50
5  boy    chen   18     50

3.相加

import pandas as pd
import numpy as np
list ={'name':['liu','lin','boning','zheyu','chen'],'sex':['boy','boy','boy','boy','boy'],'age':[18,18,18,18,18]}
man= pd.DataFrame(list,index=[1,2,3,4,5],columns=['sex','name','age','weigh'])
print(man)
man['weigh']=50
print(man)
man['tall']=man['weigh']+man['age']
print(man)
   sex    name  age weigh
1  boy     liu   18   NaN
2  boy     lin   18   NaN
3  boy  boning   18   NaN
4  boy   zheyu   18   NaN
5  boy    chen   18   NaN
   sex    name  age  weigh
1  boy     liu   18     50
2  boy     lin   18     50
3  boy  boning   18     50
4  boy   zheyu   18     50
5  boy    chen   18     50
   sex    name  age  weigh  tall
1  boy     liu   18     50    68
2  boy     lin   18     50    68
3  boy  boning   18     50    68
4  boy   zheyu   18     50    68
5  boy    chen   18     50    68

3. PIL库

> 安装

#安装pillow
#!pip install pillow

1.图片的修剪

from PIL import Image

img=Image.open('/home/aistudio/work/yushuxin.jpg')

#剪切 crop()四个参数分别是:(左上角点的x坐标,左上角点的y坐标,右下角点的x坐标,右下角点的y坐标)
img1 = img.crop((126,0,381,249))

#保存图片
img1.save('/home/aistudio/work/yushuxin_crop_result.jpg')
plt.imshow(img1)
plt.show(img1)

3.图片的缩放

from PIL import Image
img=Image.open('/home/aistudio/work/yushuxin.jpg')
img2=img.resize((int(width*0.5),int(height*0.5)))
img2.save('/home/aistudio/work/yushuxin_crop_result1.jpg')
print(img2.size)
plt.imshow(img2)
plt.show(img2)

4.图片的左右、上下翻转

from PIL import Image

img = Image.open('/home/aistudio/work/yushuxin.jpg') 

#左右镜像
img1 = img.transpose(Image.FLIP_LEFT_RIGHT)

#展示左右镜像图片
plt.imshow(img1)  
plt.show(img1)   

#上下镜像
img2 = img.transpose(Image.FLIP_TOP_BOTTOM)

#展示上下镜像图片
plt.imshow(img2)  
plt.show(img2)  

4. Matplotlib库

Matplotlib库由各种可视化类构成,内部结构复杂。

matplotlib.pylot是绘制各类可视化图形的命 令字库

import matplotlib.pyplot as plt
import numpy as np 

#显示matplotlib生成的图形
%matplotlib inline

x = np.linspace(-1,2) #等差数列
y = 2*x + 1

#传入x,y,通过plot()绘制出折线图 
plt.plot(x,y)

#显示图形
plt.show()

在这里插入图片描述
1.画到同一个画布上

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(1,5)
y1=x**2 #x的平方
y2=2*x+1

plt.figure(figsize=(7,5))#图像的宽高,单位为英寸
plt.plot(x,y1,linewidth=5)
plt.plot(x,y2,linewidth=1)
plt.xlabel('x',fontsize=50)
plt.ylabel('y',fontsize=50)
plt.show()

在这里插入图片描述
2.设置图例

import matplotlib.pyplot as plt
import numpy as numpy

x=np.linspace(1,5)
y1=x**2
y2=2*x+1

plt.figure()
l1, =plt.plot(x,y1,linewidth=5)
l2, =plt.plot(x,y2,linewidth=2)
plt.xlabel('x',fontsize=50)
plt.ylabel('y',fontsize=50)
plt.legend(handles=[l1,l2],labels=['aa','bb'],loc='best')
plt.show()

在这里插入图片描述

3.离散点的分布图

import matplotlib.pyplot as plt
import numpy as np
spot=np.random.rand(1,50)
spot1=np.random.rand (1,50)
plt.scatter(spot,spot1,color='purple',alpha=0.1)
plt.show()

在这里插入图片描述
4.绘制柱状图

x = np.arange(10)
y = 2**x+10
plt.bar(x,y,facecolor='blue',edgecolor='white')
plt.show()

在这里插入图片描述
5.标识参数(在柱状图上标注)

import matplotlib.pyplot as plt
import numpy as np

x=np.arange(10)
y=x**2+10

plt.bar(x,y,color='blue',alpha=0.6,edgecolor='red')
for a,b in zip(x,y):
    plt.text(a,b,'%.1f'% b,ha='center',va='bottom')
plt.show()

在这里插入图片描述

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值