搜索
您的当前位置:首页正文

Python第三方库学习(持续更新中。。。)

来源:二三娱乐

1 jieba库 分词库 对中文有强大的分词能力

image

优点: 1 :支持分词模式 有三种模式
1 精确模式:只要作断句,主要用于文本分析能力
2: 全模式:扫描出是成词的词语
3:搜索引擎:主要是对长词语进行再次分割
2:支持自定义字典 分词时将自定义内容当初一个整体进行切分 分析

安装 pip install jieba

代码测试如下:

import jieba

# 1分词模式
# words = jieba.cut("他来到了网易杭州大厦")
# print(",".join(words)) # 结果 他,来到,了,网易,杭州,大厦


# 2 自定义字典 自定义字典看作一个整体
# jieba.load_userdict('dict.txt')
# words = jieba.cut("他来到了网易杭州大厦") # 他,来到,了,网易,杭州大厦
# print(','.join(words))

# 3 运行时动态修改字典
# words = jieba.cut("我们中出了一个叛徒",HMM=False) #我们,中,出,了,一个,叛徒
# jieba.suggest_freq(('我们中'),True) # 自动计算的词频在使用 HMM 新词发现功能时可能无效。 结果:我们中,出,了,一个,叛徒
# print(','.join(words))



# 4 标注词性
# import jieba.posseg as pseg
#
# words = pseg.cut("我爱天安门")
#
# for word,flag in words:
# # 我 词性:r
# # 爱 词性:v
# # 天安门 词性:ns
#     print('%s 词性:%s'%(word,flag))


# 三种模式下的分词抽取
seg_list_full = jieba.cut("我来到北京清华大学",cut_all=True) #全模式 抽取词语
print('/'.join(seg_list_full))


seg_list_unfull = jieba.cut("我来到北京清华大学",cut_all=False) #精确模式 断句
print('/'.join(seg_list_unfull))

seg_list_search = jieba.cut_for_search("我来到北京清华大学")
print('/'.join(seg_list_search))


#### 结果展示
# 我/来到/北京/清华/清华大学/华大/大学
# 我/来到/北京/清华大学
# 我/来到/北京/清华/华大/大学/清华大学

2 Matplotlib (python 2D-绘图领域使用最为广泛的套件)

from pylab import *

X = np.linspace(-np.pi,np.pi,256,endpoint=True)

C,S = np.cos(X),np.sin(X)

plot(X,C)
plot(X,S)

show()
效果图 Figure_1.png

2 精细化绘制

#导入 matplotlib的所有内容 (np 指代numpy)
from pylab import *

# 创建 8*6点的图 分辨率设置为80
figure(figsize=(8,6),dpi=80)

# 创建一个新的1*1的子图 接下来图样绘制在其中的第一块
subplot(1,1,1)

# X轴数据
X = np.linspace(-np.pi,np.pi,256,endpoint=True)

# Y轴数据
C,S = np.cos(X),np.sin(X)

# 绘制余弦曲线  使用蓝色 线宽 像素线条
plot(X,C,color='blue',linewidth=2.0,linestyle='-')

# 正弦
plot(X,S,color='red',linewidth=2.0,linestyle='-')

# 设置横轴的上下限
xlim(-4.0,4.0)

# 设置横轴记号
# xticks(np.linspace(-4,4,9,endpoint=True))

# xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi])

xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])



# 设置纵轴上下限
ylim(-1.0,1.0)

# 设置纵轴上下限
# yticks(np.linspace(-1,1,5,endpoint=True))
# yticks([-1,0,1])
yticks([-1, 0, +1],[r'$-1$', r'$0$', r'$+1$'])



# 处理边界看不清
xmin ,xmax = X.min(), X.max()
ymin, ymax = -1, 1

dx = (xmax - xmin) * 0.2
dy = (ymax - ymin) * 0.2

xlim(xmin - dx, xmax + dx)
ylim(ymin - dy, ymax + dy)


# 移动脊柱
ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))


# 添加图例
plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plot(X, S, color="red",  linewidth=2.5, linestyle="-", label="sine")

legend(loc='upper left')





# 特殊点做注释
t = 2*np.pi/3
plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")
scatter([t,],[np.cos(t),], 50, color ='blue')

annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
         xy=(t, np.sin(t)), xycoords='data',
         xytext=(+10, +30), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")
scatter([t,],[np.sin(t),], 50, color ='red')

annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
         xy=(t, np.cos(t)), xycoords='data',
         xytext=(-90, -50), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))


# 处理坐标点被线遮挡(没效果 待研究)
for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(16)
    label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.25))


#保存图片
# savefit('picture1.png',dpi=72)

show()

效果图


Figure_1.png

3 其他类型的图

from pylab import *

fig = plt.figure()
ax1 = fig.add_subplot(211)

n = 256

X = np.linspace(-np.pi,np.pi,n,endpoint=True)

Y = np.sin(2*X)

ax1.fill(X,Y+1,color='red',alpha = 0.6)

ax1.fill(X,Y-1,color='green',alpha=0.6)

show()

效果图


efef32rr.png
### 散点图
from pylab import *
n = 1024
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)

# scatter函数 s点的大小 默认20 c:颜色 (默认蓝色)c = 'r' (red); c = 'g' (green);
#  c = 'k' (black) ; c = 'y'(yellow)
color = ['r','y','g']
scatter(X,Y,s=10,c= color,alpha=0.5)
show()

效果图


Figure_1.png
# 3D图
from pylab import *
from mpl_toolkits.mplot3d import Axes3D

fig = figure()
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.cos(R)

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='hot')

show()

效果图


Figure_1.png
Top